john-wagster opened a new issue, #16408:
URL: https://github.com/apache/lucene/issues/16408
### Description
### Description
TestJoinUtil.testRandomOrdinalsJoin fails deterministically on branch_10x
with a floating-point scoring mismatch. The root cause is that
GlobalOrdinalsWithScoreCollector still accumulates scores in float, while the
test helper (updated in #16378) now accumulates in double. I've logged this as
a test failure because I don't think it impacts actual results.
### Analysis of Failure
Branch: branch_10x at HEAD (67515edd)
```
java.lang.AssertionError: expected:<1.6125519> but was:<1.612552>
at TestJoinUtil.assertTopDocs(TestJoinUtil.java:1661)
at TestJoinUtil.testRandomOrdinalsJoin(TestJoinUtil.java:503)
```
Test params: `codec=Asserting(Lucene104),
sim=Asserting(RandomSimilarity(queryNorm=false): {from=DFR GB1, to=DFR
GL3(800.0), id=IB SPL-L2, value=IB SPL-DZ(0.3)})`
#16378 correctly identified that float addition is non-associative and fixed
TermsWithScoreCollector and JoinUtil's numeric point join path to accumulate in
double. However, the global ordinals join path via
GlobalOrdinalsWithScoreCollector was not updated. It still accumulates total
and avg scores in float[].
The test helper (JoinScore) now computes expected scores in double
precision, but the actual query result comes from the float-precision ordinals
collector. When a RandomSimilarity with DFR scorers is selected and multiple
scores are summed, the different precisions produce slightly different results.
### Observations
- Reproduces deterministically on branch_10x with the given seed
- Does not reproduce on main after 1000 iterations (maybe because of
different codec behavior affecting doc ordering/score distribution?)
- The code looks like the same on both branches so likely hard to reproduce
### Gradle command to reproduce
gradlew :lucene:join:test --tests
"org.apache.lucene.search.join.TestJoinUtil.testRandomOrdinalsJoin" \
-Ptests.seed=C3638DF47596A0F6 \
-Ptests.jvms=12 \
-Ptests.useSecurityManager=false \
-Ptests.file.encoding=US-ASCII \
-Ptests.vectorsize=default \
-Ptests.forceintegervectors=false
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]