Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CI] BucketCountKSTestAggregatorTests testKsTest_LowerTailedValues failing #74909

Closed
davidkyle opened this issue Jul 5, 2021 · 3 comments · Fixed by #75793
Closed

[CI] BucketCountKSTestAggregatorTests testKsTest_LowerTailedValues failing #74909

davidkyle opened this issue Jul 5, 2021 · 3 comments · Fixed by #75793
Assignees
Labels
:ml Machine learning Team:ML Meta label for the ML team >test-failure Triaged test failures from CI

Comments

@davidkyle
Copy link
Member

Build scan:
https://gradle-enterprise.elastic.co/s/hjhqluh6kgo3k/tests/:x-pack:plugin:ml:test/org.elasticsearch.xpack.ml.aggs.kstest.BucketCountKSTestAggregatorTests/testKsTest_LowerTailedValues

Reproduction line:
./gradlew ':x-pack:plugin:ml:test' --tests "org.elasticsearch.xpack.ml.aggs.kstest.BucketCountKSTestAggregatorTests.testKsTest_LowerTailedValues" -Dtests.seed=9F6F4A063AC4B3AF -Dtests.locale=de-DE -Dtests.timezone=America/Cambridge_Bay -Druntime.java=11

Applicable branches:
master

Reproduces locally?:
Yes

Failure history:
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.xpack.ml.aggs.kstest.BucketCountKSTestAggregatorTests&tests.test=testKsTest_LowerTailedValues

Failure excerpt:

java.lang.AssertionError: two_sided
Expected: a numeric value within <0.25> of <0.27838292008175725>
     but: <0.018584154974416345> differed by <0.009798765107340901> more than delta <0.25>

  at __randomizedtesting.SeedInfo.seed([9F6F4A063AC4B3AF:BEF4A9954F899BCE]:0)
  at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
  at org.junit.Assert.assertThat(Assert.java:956)
  at org.elasticsearch.xpack.ml.aggs.kstest.BucketCountKSTestAggregatorTests.testKsTest_LowerTailedValues(BucketCountKSTestAggregatorTests.java:124)
  at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
  at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:566)
  at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
  at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
  at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
  at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
  at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:375)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:824)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:475)
  at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
  at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
  at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
  at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
  at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
  at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
  at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
  at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
  at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:375)
  at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:831)
  at java.lang.Thread.run(Thread.java:834)

@davidkyle davidkyle added :ml Machine learning >test-failure Triaged test failures from CI labels Jul 5, 2021
@elasticmachine elasticmachine added the Team:ML Meta label for the ML team label Jul 5, 2021
@elasticmachine
Copy link
Collaborator

Pinging @elastic/ml-core (Team:ML)

@dai-dao
Copy link

dai-dao commented Jul 27, 2021

Hello, i investigated this issue briefly and found that the error occurred at this line:

assertThat(alternative,
                lessValsUniformSampled.get(alternative),
                closeTo(lessValsUniformSampledSparsed.get(alternative), 0.25));

and that the actual delta is 0.2597987651073409. An interesting observation is that if I comment out these lines which are unrelated to the error:

Map<String, Double> lessValsUpperSampled = runKsTestAndValidate(LOWER_TAILED_VALUES, new SamplingMethod.UpperTail());
Map<String, Double> lessValsUpperSampledSparsed = runKsTestAndValidate(LOWER_TAILED_VALUES_SPARSE, new SamplingMethod.UpperTail());
Map<String, Double> lessValsLowerSampled = runKsTestAndValidate(LOWER_TAILED_VALUES, new SamplingMethod.LowerTail());
Map<String, Double> lessValsLowerSampledSparsed = runKsTestAndValidate(LOWER_TAILED_VALUES_SPARSE, new SamplingMethod.LowerTail());

then the test will pass, which means that they are related to the number generator somehow. Cheers :)

@benwtrent benwtrent self-assigned this Jul 28, 2021
@benwtrent
Copy link
Member

@dai-dao 100% :). The issue with the sparse distribution is that it requires the scale to all be reduced. But consequently, the distribution starts to look more uniform. I have a change in flight to address this. Running 1,000s of times locally to make sure :)

benwtrent added a commit to benwtrent/elasticsearch that referenced this issue Jul 28, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes elastic#74909
benwtrent added a commit that referenced this issue Jul 29, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes #74909
elasticsearchmachine pushed a commit to elasticsearchmachine/elasticsearch that referenced this issue Jul 29, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes elastic#74909
elasticsearchmachine pushed a commit to elasticsearchmachine/elasticsearch that referenced this issue Jul 29, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes elastic#74909
elasticsearchmachine added a commit that referenced this issue Jul 29, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes #74909

Co-authored-by: Benjamin Trent <[email protected]>
elasticsearchmachine added a commit that referenced this issue Jul 29, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes #74909

Co-authored-by: Benjamin Trent <[email protected]>
ywangd pushed a commit to ywangd/elasticsearch that referenced this issue Jul 30, 2021
testKsTest_LowerTailedValues is failing due to distribution
issues. The random variables in the sparse case are too
uniform and causing two-sided alternative
tests to not be consistent.

closes elastic#74909
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:ml Machine learning Team:ML Meta label for the ML team >test-failure Triaged test failures from CI
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants