msokolov opened a new issue, #14123:
URL: https://github.com/apache/lucene/issues/14123

   ### Description
   
   I'm confused about this one -- it seems straightforward; the test creates an 
index with a segment that has no vectors, so its vectorsReader is null, but we 
assume it is not null when wrapping it in `SortingCodecReader`. So we can 
easily enough add protection ` (if (null) return null)` in 
`SortingCodecReader.getVectorReader()` and it is clear that we already expect 
to handle a null return in the merge call. Indeed I tried this and it fixes the 
test.
   
   What I'm struggling with is (1) why wasn't this a problem in the past? and 
(2) Why do we need this protection for KnnVectorsReader, but not for all the 
other reader types. For example, looking at 
`SortingCodecReader.getPointsReader()` it just assumes that its delegate reader 
is non-null.
   
   Re: (1)
   
   ```
   java.lang.NullPointerException: Cannot invoke 
"org.apache.lucene.codecs.KnnVectorsReader.checkIntegrity()" because 
"this.val$delegate" is null
   
   Stacktrace
   
   java.lang.NullPointerException: Cannot invoke 
"org.apache.lucene.codecs.KnnVectorsReader.checkIntegrity()" because 
"this.val$delegate" is null
        at 
org.apache.lucene.index.SortingCodecReader$5.checkIntegrity(SortingCodecReader.java:557)
        at 
org.apache.lucene.codecs.KnnVectorsWriter.merge(KnnVectorsWriter.java:95)
        at 
org.apache.lucene.index.SegmentMerger.mergeVectorValues(SegmentMerger.java:271)
        at 
org.apache.lucene.index.SegmentMerger.mergeWithLogging(SegmentMerger.java:314)
        at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:158)
        at 
org.apache.lucene.index.IndexWriter.addIndexesReaderMerge(IndexWriter.java:3468)
        at 
org.apache.lucene.index.IndexWriter$AddIndexesMergeSource.merge(IndexWriter.java:3345)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:668)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:729)
   
   Standard Error
   
   Jan 09, 2025 8:54:46 PM 
com.carrotsearch.randomizedtesting.RandomizedRunner$QueueUncaughtExceptionsHandler
 uncaughtException
   WARNING: Uncaught exception in thread: Thread[#695,Lucene Merge Thread 
#0,5,TGRP-TestSortingCodecReader]
   org.apache.lucene.index.MergePolicy$MergeException: 
java.lang.NullPointerException: Cannot invoke 
"org.apache.lucene.codecs.KnnVectorsReader.checkIntegrity()" because 
"this.val$delegate" is null
        at __randomizedtesting.SeedInfo.seed([C61D1CC67658F8FD]:0)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:764)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:756)
   Caused by: java.lang.NullPointerException: Cannot invoke 
"org.apache.lucene.codecs.KnnVectorsReader.checkIntegrity()" because 
"this.val$delegate" is null
        at 
org.apache.lucene.index.SortingCodecReader$5.checkIntegrity(SortingCodecReader.java:557)
        at 
org.apache.lucene.codecs.KnnVectorsWriter.merge(KnnVectorsWriter.java:95)
        at 
org.apache.lucene.index.SegmentMerger.mergeVectorValues(SegmentMerger.java:271)
        at 
org.apache.lucene.index.SegmentMerger.mergeWithLogging(SegmentMerger.java:314)
        at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:158)
        at 
org.apache.lucene.index.IndexWriter.addIndexesReaderMerge(IndexWriter.java:3468)
        at 
org.apache.lucene.index.IndexWriter$AddIndexesMergeSource.merge(IndexWriter.java:3345)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:668)
        at 
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:729)
   ```
   
   
   ### Gradle command to reproduce
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to