Formatting error in ReportTask in contrib/benchmark
---------------------------------------------------

                 Key: LUCENE-980
                 URL: https://issues.apache.org/jira/browse/LUCENE-980
             Project: Lucene - Java
          Issue Type: Bug
          Components: contrib/benchmark
    Affects Versions: 2.2
            Reporter: Grant Ingersoll
            Priority: Minor
             Fix For: 2.3


I am building a new Task, AnalyzerTask, that lets you change the Analyzer in 
the loop, thus allowing for the comparison of the same Analyzers over the set 
of documents.

My algorithm declaration looks like:
NewAnalyzer(WhitespaceAnalyzer, SimpleAnalyzer, StopAnalyzer, 
standard.StandardAnalyzer)

And it could be longer.

The exception is:
Error: cannot execute the algorithm! String index out of range: 85
java.lang.StringIndexOutOfBoundsException: String index out of range: 85
        at java.lang.String.substring(String.java:1765)
        at 
org.apache.lucene.benchmark.byTask.utils.Format.format(Format.java:85)
        at 
org.apache.lucene.benchmark.byTask.tasks.ReportTask.tableTitle(ReportTask.java:85)
        at 
org.apache.lucene.benchmark.byTask.tasks.ReportTask.genPartialReport(ReportTask.java:140)
        at 
org.apache.lucene.benchmark.byTask.tasks.RepSumByNameTask.reportSumByName(RepSumByNameTask.java:77)
        at 
org.apache.lucene.benchmark.byTask.tasks.RepSumByNameTask.doLogic(RepSumByNameTask.java:39)
        at 
org.apache.lucene.benchmark.byTask.tasks.PerfTask.runAndMaybeStats(PerfTask.java:83)
        at 
org.apache.lucene.benchmark.byTask.tasks.TaskSequence.doSerialTasks(TaskSequence.java:112)
        at 
org.apache.lucene.benchmark.byTask.tasks.TaskSequence.doLogic(TaskSequence.java:93)
        at 
org.apache.lucene.benchmark.byTask.utils.Algorithm.execute(Algorithm.java:228)
        at 
org.apache.lucene.benchmark.byTask.Benchmark.execute(Benchmark.java:73)
        at org.apache.lucene.benchmark.byTask.Benchmark.main(Benchmark.java:109)

The error seems to be caused by the fact that ReportTask uses the OP 
(operation) column for the String, but then uses the length of the algorithm 
declaration to index into the String, resulting in the index out of bounds 
exception.

The line in question is:
return (s + padd).substring(0, col.length());

And probably should be changed to something like:
    String s1 = (s + padd);
    return s1.substring(0, Math.min(col.length(), s1.length()));

Either that or the column should be trimmed.  The workaround is to explicitly 
name the task.

If no objections, I will make the change, tomorrow.  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to