From 2d1e57f058389dabc0ec09cf0fc412ecebddd455 Mon Sep 17 00:00:00 2001 From: David Smiley Date: Sat, 5 Sep 2026 08:57:03 -0400 Subject: [PATCH] Fix flaky doc-order assertions in TextToVectorUpdateProcessorTest The test's shared query helper ran `q=*:*` with no sort. Since *:* gives every doc the same score, the order between tied docs 98 and 99 was resolved by internal segment/merge timing rather than anything Solr guarantees -- causing intermittent failures under contended workers (e.g. crave, `-XX:ActiveProcessorCount=1`). Add an explicit `sort=id desc` to make ordering deterministic, and swap the expected doc order in processAtomicUpdate_shouldTriggerTheVectorizationAndFetchTheStoredContent, whose assertions had been keyed to the opposite (accidental) order. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_019n8pzT7WWNwf76ackKPyv3 --- .../processor/TextToVectorUpdateProcessorTest.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java index 2b948786d2af..06711ae49192 100644 --- a/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java +++ b/solr/modules/language-models/src/test/org/apache/solr/languagemodels/update/processor/TextToVectorUpdateProcessorTest.java @@ -77,6 +77,9 @@ private SolrQuery getSolrQuery() { final SolrQuery query = new SolrQuery(); query.setQuery(solrQuery); query.add("fl", "id,vector"); + // *:* gives every doc the same score, so without an explicit sort the order between + // tied docs is arbitrary (depends on segment/merge timing), which made this flaky. + query.setSort("id", SolrQuery.ORDER.desc); return query; } @@ -187,10 +190,10 @@ public void processAtomicUpdate_shouldTriggerTheVectorizationAndFetchTheStoredCo assertJQ( "/query" + query.toQueryString(), "/response/numFound==2]", - "/response/docs/[0]/id=='98'", - "!/response/docs/[0]/vector==", // no vector field for document 98 - "/response/docs/[1]/id=='99'", - "/response/docs/[1]/vector==[1.0, 2.0, 3.0, 4.0]"); + "/response/docs/[0]/id=='99'", + "/response/docs/[0]/vector==[1.0, 2.0, 3.0, 4.0]", + "/response/docs/[1]/id=='98'", + "!/response/docs/[1]/vector=="); // no vector field for document 98 restTestHarness.delete(TextToVectorModelStore.REST_END_POINT + "/dummy-1"); }