You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/03/09 17:00:49 UTC

[38/50] [abbrv] lucene-solr git commit: LUCENE-7083: default points merge logic should not ask a reader to merge points on a field that doesn't exist in that segment

LUCENE-7083: default points merge logic should not ask a reader to merge points on a field that doesn't exist in that segment


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2cac33a5
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2cac33a5
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2cac33a5

Branch: refs/heads/apiv2
Commit: 2cac33a5ce7b64713eba6e22d5f7c9122ab8eafe
Parents: 9393a31
Author: Mike McCandless <mi...@apache.org>
Authored: Tue Mar 8 13:28:28 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Tue Mar 8 13:28:28 2016 -0500

----------------------------------------------------------------------
 .../org/apache/lucene/codecs/PointsWriter.java  |  6 ++++++
 .../org/apache/lucene/index/IndexWriter.java    |  1 +
 .../apache/lucene/index/TestPointValues.java    | 20 ++++++++++++++++++++
 3 files changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2cac33a5/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
index 56689ec..53db281 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
@@ -54,6 +54,12 @@ public abstract class PointsWriter implements Closeable {
                        // This segment has no points
                        continue;
                      }
+                     FieldInfo readerFieldInfo = mergeState.fieldInfos[i].fieldInfo(fieldName);
+                     if (readerFieldInfo == null) {
+                       // This segment never saw this field
+                       continue;
+                     }
+
                      MergeState.DocMap docMap = mergeState.docMaps[i];
                      int docBase = mergeState.docBase[i];
                      pointsReader.intersect(fieldInfo.name,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2cac33a5/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index 57ce3dd..66a0e73 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -4116,6 +4116,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
                              (mergeState.mergeFieldInfos.hasDocValues() ? "docValues" : "no docValues") + "; " + 
                              (mergeState.mergeFieldInfos.hasProx() ? "prox" : "no prox") + "; " + 
                              (mergeState.mergeFieldInfos.hasProx() ? "freqs" : "no freqs") + "; " +
+                             (mergeState.mergeFieldInfos.hasPointValues() ? "points" : "no points") + "; " +
                              String.format(Locale.ROOT,
                                            "%.1f sec (%.1f sec stopped, %.1f sec paused) to merge segment [%.2f MB, %.2f MB/sec]",
                                            sec,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2cac33a5/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
index 7231b1a..9ced11a 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
@@ -39,6 +39,7 @@ import org.apache.lucene.index.PointValues.IntersectVisitor;
 import org.apache.lucene.index.PointValues.Relation;
 import org.apache.lucene.index.PointValues;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
@@ -562,4 +563,23 @@ public class TestPointValues extends LuceneTestCase {
     r.close();
     dir.close();
   }
+
+  public void testPointsFieldMissingFromOneSegment() throws Exception {
+    Directory dir = FSDirectory.open(createTempDir());
+    IndexWriterConfig iwc = new IndexWriterConfig(null);
+    IndexWriter w = new IndexWriter(dir, iwc);
+    Document doc = new Document();
+    doc.add(new StringField("id", "0", Field.Store.NO));
+    doc.add(new IntPoint("int0", 0));
+    w.addDocument(doc);
+    w.commit();
+
+    doc = new Document();
+    doc.add(new IntPoint("int1", 17));
+    w.addDocument(doc);
+    w.forceMerge(1);
+
+    w.close();
+    dir.close();
+  }
 }