You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2012/01/25 15:43:17 UTC

svn commit: r1235772 - /lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/ShardSearchingTestBase.java

Author: rmuir
Date: Wed Jan 25 14:43:17 2012
New Revision: 1235772

URL: http://svn.apache.org/viewvc?rev=1235772&view=rev
Log:
LUCENE-3639: fix ShardSearchingTestBase bugs for stats accumulation

Modified:
    lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/ShardSearchingTestBase.java

Modified: lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/ShardSearchingTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/ShardSearchingTestBase.java?rev=1235772&r1=1235771&r2=1235772&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/ShardSearchingTestBase.java (original)
+++ lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/search/ShardSearchingTestBase.java Wed Jan 25 14:43:17 2012
@@ -268,8 +268,19 @@ public abstract class ShardSearchingTest
             assert subStats != null;
           }
         
-          docFreq += subStats.docFreq();
-          totalTermFreq += subStats.totalTermFreq();
+          int nodeDocFreq = subStats.docFreq();
+          if (docFreq >= 0 && nodeDocFreq >= 0) {
+            docFreq += nodeDocFreq;
+          } else {
+            docFreq = -1;
+          }
+          
+          long nodeTotalTermFreq = subStats.totalTermFreq();
+          if (totalTermFreq >= 0 && nodeTotalTermFreq >= 0) {
+            totalTermFreq += nodeTotalTermFreq;
+          } else {
+            totalTermFreq = -1;
+          }
         }
 
         return new TermStatistics(term.bytes(), docFreq, totalTermFreq);
@@ -299,9 +310,29 @@ public abstract class ShardSearchingTest
           // Collection stats are pre-shared on reopen, so,
           // we better not have a cache miss:
           assert nodeStats != null: "myNodeID=" + myNodeID + " nodeID=" + nodeID + " version=" + nodeVersions[nodeID] + " field=" + field;
-          docCount += nodeStats.docCount();
-          sumTotalTermFreq += nodeStats.sumTotalTermFreq();
-          sumDocFreq += nodeStats.sumDocFreq();
+          
+          int nodeDocCount = nodeStats.docCount();
+          if (docCount >= 0 && nodeDocCount >= 0) {
+            docCount += nodeDocCount;
+          } else {
+            docCount = -1;
+          }
+          
+          long nodeSumTotalTermFreq = nodeStats.sumTotalTermFreq();
+          if (sumTotalTermFreq >= 0 && nodeSumTotalTermFreq >= 0) {
+            sumTotalTermFreq += nodeSumTotalTermFreq;
+          } else {
+            sumTotalTermFreq = -1;
+          }
+          
+          long nodeSumDocFreq = nodeStats.sumDocFreq();
+          if (sumDocFreq >= 0 && nodeSumDocFreq >= 0) {
+            sumDocFreq += nodeSumDocFreq;
+          } else {
+            sumDocFreq = -1;
+          }
+          
+          assert nodeStats.maxDoc() >= 0;
           maxDoc += nodeStats.maxDoc();
         }