jtibshirani commented on code in PR #992:
URL: https://github.com/apache/lucene/pull/992#discussion_r926196192


##########
lucene/core/src/java/org/apache/lucene/util/hnsw/HnswGraphSearcher.java:
##########
@@ -203,8 +204,11 @@ private NeighborQueue searchLevel(
     return results;
   }
 
-  private void clearScratchState() {
+  private void clearScratchState(int capacity) {
     candidates.clear();
+    if (visited.length() < capacity) {
+      visited = FixedBitSet.ensureCapacity((FixedBitSet) visited, capacity);

Review Comment:
   I just realized that we're doing a cast which is pretty tricky/ fragile. The 
check `visited.length() < capacity` is only true if we are building the graph 
(not searching), and `HnswGraphBuilder` happens to always use `FixedBitSet`.
   
   As a follow-up maybe we should consider LUCENE-10404 or something similar, 
which chooses a better 'visited' data structure and doesn't require us to do 
this cast + resize.



-- 
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

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