Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenIndexTask.java =================================================================== --- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenIndexTask.java (revision 608075) +++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/OpenIndexTask.java (working copy) @@ -61,12 +61,8 @@ IndexWriter writer = new IndexWriter(dir, autoCommit, analyzer, false); // must update params for newly opened writer - if (flushAtRAMUsage > 0) - writer.setRAMBufferSizeMB(flushAtRAMUsage); - else if (mxbf != 0) - writer.setMaxBufferedDocs(mxbf); - else - throw new RuntimeException("either max.buffered or ram.flush.mb must be non-zero"); + writer.setRAMBufferSizeMB(flushAtRAMUsage); + writer.setMaxBufferedDocs(mxbf); writer.setMaxFieldLength(mxfl); writer.setMergeFactor(mrgf); writer.setUseCompoundFile(cmpnd); // this one redundant? Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java =================================================================== --- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java (revision 608075) +++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/CreateIndexTask.java (working copy) @@ -57,12 +57,8 @@ iw.setUseCompoundFile(cmpnd); iw.setMergeFactor(mrgf); iw.setMaxFieldLength(mxfl); - if (flushAtRAMUsage > 0) - iw.setRAMBufferSizeMB(flushAtRAMUsage); - else if (mxbf != 0) - iw.setMaxBufferedDocs(mxbf); - else - throw new RuntimeException("either max.buffered or ram.flush.mb must be non-zero"); + iw.setRAMBufferSizeMB(flushAtRAMUsage); + iw.setMaxBufferedDocs(mxbf); getRunData().setIndexWriter(iw); return 1; } Index: contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java =================================================================== --- contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java (revision 608075) +++ contrib/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java (working copy) @@ -38,6 +38,8 @@ private String seqName; private boolean exhausted = false; private boolean resetExhausted = false; + private PerfTask[] tasksArray; + private boolean anyExhaustedTasks; public TaskSequence (PerfRunData runData, String name, TaskSequence parent, boolean parallel) { super(runData); @@ -49,6 +51,18 @@ tasks = new ArrayList(); } + private void initTasksArray() { + if (tasksArray == null) { + final int numTasks = tasks.size(); + tasksArray = new PerfTask[numTasks]; + for(int k=0;k 0) { //System.out.println("wait: "+waitMore+" for rate: "+ratePerMin+" (delayStep="+delayStep+")"); @@ -135,7 +148,8 @@ nextStartTime += delayStep; // this aims at avarage rate. try { count += task.runAndMaybeStats(letChildReport); - updateExhausted(task); + if (anyExhaustedTasks) + updateExhausted(task); } catch (NoMoreDataException e) { exhausted = true; } @@ -149,28 +163,27 @@ if (task instanceof ResetInputsTask) { exhausted = false; resetExhausted = true; - } else { - if (task instanceof TaskSequence) { - TaskSequence t = (TaskSequence) task; - if (t.resetExhausted) { - exhausted = false; - resetExhausted = true; - t.resetExhausted = false; - } else { - exhausted |= t.exhausted; - } + } else if (task instanceof TaskSequence) { + TaskSequence t = (TaskSequence) task; + if (t.resetExhausted) { + exhausted = false; + resetExhausted = true; + t.resetExhausted = false; + } else { + exhausted |= t.exhausted; } } } private int doParallelTasks() throws Exception { + initTasksArray(); final int count [] = {0}; Thread t[] = new Thread [repetitions * tasks.size()]; // prepare threads int indx = 0; for (int k=0; k