This is an automated email from the ASF dual-hosted git repository.

janhoy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 85390422881 SOLR-18012 Improve test 
DistributedFacetSimpleRefinementLongTailTest that failed for some seeds (#3924)
85390422881 is described below

commit 85390422881cbf7120377767147893ac3b3b8c00
Author: Jan Høydahl <[email protected]>
AuthorDate: Tue Dec 9 14:01:31 2025 +0100

    SOLR-18012 Improve test DistributedFacetSimpleRefinementLongTailTest that 
failed for some seeds (#3924)
---
 ...vement-DistributedFacetSimpleRefinementLongTailTest.yml |  8 ++++++++
 .../DistributedFacetSimpleRefinementLongTailTest.java      | 14 ++++++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git 
a/changelog/unreleased/SOLR-18012-test-improvement-DistributedFacetSimpleRefinementLongTailTest.yml
 
b/changelog/unreleased/SOLR-18012-test-improvement-DistributedFacetSimpleRefinementLongTailTest.yml
new file mode 100644
index 00000000000..fe31c546f20
--- /dev/null
+++ 
b/changelog/unreleased/SOLR-18012-test-improvement-DistributedFacetSimpleRefinementLongTailTest.yml
@@ -0,0 +1,8 @@
+# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
+title: Test improvement DistributedFacetSimpleRefinementLongTailTest that 
failed for some seeds
+type: other # added, changed, fixed, deprecated, removed, dependency_update, 
security, other
+authors:
+  - name: Jan Høydahl
+links:
+  - name: SOLR-18012
+    url: https://issues.apache.org/jira/browse/SOLR-18012
diff --git 
a/solr/core/src/test/org/apache/solr/search/facet/DistributedFacetSimpleRefinementLongTailTest.java
 
b/solr/core/src/test/org/apache/solr/search/facet/DistributedFacetSimpleRefinementLongTailTest.java
index 3483fc1cea9..8c8193281be 100644
--- 
a/solr/core/src/test/org/apache/solr/search/facet/DistributedFacetSimpleRefinementLongTailTest.java
+++ 
b/solr/core/src/test/org/apache/solr/search/facet/DistributedFacetSimpleRefinementLongTailTest.java
@@ -39,6 +39,12 @@ import org.junit.Test;
  */
 public class DistributedFacetSimpleRefinementLongTailTest extends 
BaseDistributedSearchTestCase {
 
+  // Percentile calculations use the t-digest approximation algorithm with 
compression=100.
+  // When merging t-digests from multiple shards, approximation errors 
compound, especially
+  // for extreme percentiles (like 90th). A tolerance of 3.0 (~0.6% relative 
error for values
+  // in range [-99,693]) accounts for this distributed aggregation error.
+  private static final double PERCENTILE_TOLERANCE = 3.0;
+
   private static List<String> ALL_STATS =
       Arrays.asList(
           "min",
@@ -287,7 +293,7 @@ public class DistributedFacetSimpleRefinementLongTailTest 
extends BaseDistribute
       assertEquals(101L, bucket.get("countvals"));
       assertEquals(0L, bucket.get("missing"));
       assertEquals(48.0D, bucket.get("sum"));
-      assertEquals(1.0D, bucket.get("percentile"));
+      assertEquals(1.0D, (double) bucket.get("percentile"), 
PERCENTILE_TOLERANCE);
       assertEquals(0.475247524752475D, (double) bucket.get("avg"), 0.1E-7);
       assertEquals(54.0D, (double) bucket.get("sumsq"), 0.1E-7);
       assertEquals(0.55846323792D, (double) bucket.get("stddev"), 0.1E-7);
@@ -511,7 +517,7 @@ public class DistributedFacetSimpleRefinementLongTailTest 
extends BaseDistribute
     assertEquals(300L, aaa0_Bucket.get("countvals"));
     assertEquals(0L, aaa0_Bucket.get("missing"));
     assertEquals(34650.0D, aaa0_Bucket.get("sum"));
-    assertEquals(486.5D, (double) aaa0_Bucket.get("percentile"), 0.1E-7);
+    assertEquals(486.5D, (double) aaa0_Bucket.get("percentile"), 
PERCENTILE_TOLERANCE);
     assertEquals(115.5D, (double) aaa0_Bucket.get("avg"), 0.1E-7);
     assertEquals(1.674585E7D, (double) aaa0_Bucket.get("sumsq"), 0.1E-7);
     assertEquals(206.4493184076D, (double) aaa0_Bucket.get("stddev"), 0.1E-7);
@@ -527,7 +533,7 @@ public class DistributedFacetSimpleRefinementLongTailTest 
extends BaseDistribute
     assertEquals(0L, tail_Bucket.get("min"));
     assertEquals(44L, tail_Bucket.get("max"));
     assertEquals(90L, tail_Bucket.get("countvals"));
-    assertEquals(40.0D, tail_Bucket.get("percentile"));
+    assertEquals(40.0D, (double) tail_Bucket.get("percentile"), 
PERCENTILE_TOLERANCE);
     assertEquals(45L, tail_Bucket.get("missing"));
     assertEquals(1980.0D, tail_Bucket.get("sum"));
     assertEquals(22.0D, (double) tail_Bucket.get("avg"), 0.1E-7);
@@ -548,7 +554,7 @@ public class DistributedFacetSimpleRefinementLongTailTest 
extends BaseDistribute
     assertEquals(35L, tailB_Bucket.get("min"));
     assertEquals(40L, tailB_Bucket.get("max"));
     assertEquals(12L, tailB_Bucket.get("countvals"));
-    assertEquals(40.0D, tailB_Bucket.get("percentile"));
+    assertEquals(40.0D, (double) tailB_Bucket.get("percentile"), 
PERCENTILE_TOLERANCE);
     assertEquals(5L, tailB_Bucket.get("missing"));
     assertEquals(450.0D, tailB_Bucket.get("sum"));
     assertEquals(37.5D, (double) tailB_Bucket.get("avg"), 0.1E-7);

Reply via email to