You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by iv...@apache.org on 2021/11/29 08:21:45 UTC

[lucene] branch branch_9x updated: LUCENE-10264: Clone index input when creating a PointTree in SimpleTextBKDReader (#478)

This is an automated email from the ASF dual-hosted git repository.

ivera pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new 62084d7  LUCENE-10264: Clone index input when creating a PointTree in SimpleTextBKDReader (#478)
62084d7 is described below

commit 62084d7138808887783199b4256fc3eee794355e
Author: Ignacio Vera <iv...@apache.org>
AuthorDate: Mon Nov 29 09:20:20 2021 +0100

    LUCENE-10264: Clone index input when creating a PointTree in SimpleTextBKDReader (#478)
    
    Fixes a race condition introduced in LUCENE-9820.
---
 .../org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
index c5d5a29..6b98949 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextBKDReader.java
@@ -77,7 +77,7 @@ final class SimpleTextBKDReader extends PointValues {
 
   @Override
   public PointTree getPointTree() {
-    return new SimpleTextPointTree(1, 1, minPackedValue, maxPackedValue);
+    return new SimpleTextPointTree(in.clone(), 1, 1, minPackedValue, maxPackedValue);
   }
 
   private class SimpleTextPointTree implements PointTree {
@@ -94,8 +94,11 @@ final class SimpleTextBKDReader extends PointValues {
     // holds the splitDim for each level:
     private final int[] splitDims;
 
+    private final IndexInput in;
+
     private SimpleTextPointTree(
-        int nodeID, int level, byte[] minPackedValue, byte[] maxPackedValue) {
+        IndexInput in, int nodeID, int level, byte[] minPackedValue, byte[] maxPackedValue) {
+      this.in = in;
       this.scratchDocIDs = new int[config.maxPointsInLeafNode];
       this.scratchPackedValue = new byte[config.packedBytesLength];
       this.nodeID = nodeID;
@@ -121,7 +124,7 @@ final class SimpleTextBKDReader extends PointValues {
     @Override
     public PointTree clone() {
       SimpleTextPointTree index =
-          new SimpleTextPointTree(nodeID, level, minPackedValue, maxPackedValue);
+          new SimpleTextPointTree(in.clone(), nodeID, level, minPackedValue, maxPackedValue);
       if (isLeafNode() == false) {
         // copy node data
         index.splitDims[level] = splitDims[level];