Skip to content

Commit 34d55f2

Browse files
Jake Lucianisam-herman
authored andcommitted
Expose merge bug as test was swallowing it (#142)
* Expose merge bug as test was swallowing it * Update KNNJVectorTests.java log message Signed-off-by: sam-herman <97131656+sam-herman@users.noreply.github.com> --------- Signed-off-by: sam-herman <97131656+sam-herman@users.noreply.github.com> Co-authored-by: sam-herman <97131656+sam-herman@users.noreply.github.com> (cherry picked from commit 5501720)
1 parent 9475b30 commit 34d55f2

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

src/main/java/org/opensearch/knn/index/codec/jvector/JVectorReader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ public void close() throws IOException {
216216
for (FieldEntry fieldEntry : fieldEntryMap.values()) {
217217
IOUtils.close(fieldEntry);
218218
}
219+
fieldEntryMap.clear();
219220
}
220221

221222
private void readFields(ChecksumIndexInput meta) throws IOException {

src/test/java/org/opensearch/knn/index/codec/jvector/KNNJVectorTests.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -461,9 +461,11 @@ public void testLuceneKnnIndex_multipleMerges_with_ordering_check() throws IOExc
461461
try {
462462
for (int t = 0; t < numThreads; t++) {
463463
executor.submit(() -> {
464+
int i = 0;
465+
464466
try {
465467
ThreadLocalRandom random = ThreadLocalRandom.current();
466-
for (int i = 0; i < queriesPerThread && !failureDetected.get(); i++) {
468+
for (i = 0; i < queriesPerThread && !failureDetected.get(); i++) {
467469
// Choose a random docId to search for
468470
int randomDocId = random.nextInt(reader.maxDoc());
469471
float[] query = new float[] { randomDocId, 0 };
@@ -472,13 +474,15 @@ public void testLuceneKnnIndex_multipleMerges_with_ordering_check() throws IOExc
472474
assertEquals("Search should return correct number of results", k, td.scoreDocs.length);
473475
assertEquals("Search should return the correct document", randomDocId, td.scoreDocs[0].doc);
474476
totalQueries.incrementAndGet();
475-
} catch (Exception e) {
476-
failureDetected.set(true);
477+
} catch (Throwable e) {
478+
failureDetected.compareAndSet(false, true);
479+
log.error("Exception encountered", e);
477480
fail("Exception during concurrent search: " + e.getMessage());
478481
}
479482
}
480483
} finally {
481484
latch.countDown();
485+
log.warn("Ran {} queries", i);
482486
}
483487
});
484488
}
@@ -487,9 +491,10 @@ public void testLuceneKnnIndex_multipleMerges_with_ordering_check() throws IOExc
487491
boolean completed = latch.await(30, TimeUnit.SECONDS);
488492
assertTrue("Test timed out while waiting for concurrent searches", completed);
489493
assertFalse("Test encountered failures during concurrent searches", failureDetected.get());
494+
assertEquals("Incorrect number of queries executed", numThreads * queriesPerThread, totalQueries.get());
490495

491496
// Log the number of successful queries
492-
log.info("Successfully completed {} concurrent kNN search queries", totalQueries.get());
497+
log.info("Successfully completed {} concurrent kNN search queries!", totalQueries.get());
493498

494499
} finally {
495500
executor.shutdownNow();

0 commit comments

Comments
 (0)