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