You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@solr.apache.org by Chris Hostetter <ho...@fucit.org> on 2024/07/23 19:15:01 UTC
Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build # 19448 - Unstable!
Uwe: In the past 24 hours, 3 of your 64bit/hotspot/jdk-23-ea+33 jenkins
builds have all failed on these 2 (Locale related) tests (w/diff seeds
that don't reproduce for me on released jdks)
Perhaps there is a new Locale based date parsing issue in the latest EA
that you could look into and report to openJDK?
: Date: Tue, 23 Jul 2024 15:09:33 +0000 (UTC)
: From: Policeman Jenkins Server <je...@thetaphi.de>
: Reply-To: dev@solr.apache.org
: To: builds@solr.apache.org
: Subject: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build #
: 19448 - Unstable!
:
: Build: https://jenkins.thetaphi.de/job/Solr-main-Linux/19448/
: Java: 64bit/hotspot/jdk-23-ea+33 -XX:-UseCompressedOops -XX:+UseG1GC
:
: 2 tests failed.
: FAILED: org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testAKSTZone
:
: Error Message:
: java.time.format.DateTimeParseException: Text 'Thu Nov 13 04:35:51 AKST 2008' could not be parsed at index 20
:
: Stack Trace:
: java.time.format.DateTimeParseException: Text 'Thu Nov 13 04:35:51 AKST 2008' could not be parsed at index 20
: at __randomizedtesting.SeedInfo.seed([B84D991968485BB1:B8763855675AE20A]:0)
: at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2108)
: at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:2010)
: at org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testAKSTZone(ParsingFieldUpdateProcessorsTest.java:1079)
: at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
: at java.base/java.lang.reflect.Method.invoke(Method.java:580)
: 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.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
: at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
: at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
: 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 com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
: 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.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
: at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
: at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
: at java.base/java.lang.Thread.run(Thread.java:1575)
:
:
: FAILED: org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testParseFrenchDate
:
: Error Message:
: java.lang.AssertionError
:
: Stack Trace:
: java.lang.AssertionError
: at __randomizedtesting.SeedInfo.seed([B84D991968485BB1:F1D6EFB1A35A7380]:0)
: at org.junit.Assert.fail(Assert.java:87)
: at org.junit.Assert.assertTrue(Assert.java:42)
: at org.junit.Assert.assertTrue(Assert.java:53)
: at org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testParseFrenchDate(ParsingFieldUpdateProcessorsTest.java:253)
: at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
: at java.base/java.lang.reflect.Method.invoke(Method.java:580)
: 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.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
: at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
: at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
: 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 com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
: 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.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
: at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
: at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
: at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
: at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
: at org.junit.rules.RunRules.evaluate(RunRules.java:20)
: at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
: at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
: at java.base/java.lang.Thread.run(Thread.java:1575)
:
-Hoss
http://www.lucidworks.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
For additional commands, e-mail: dev-help@solr.apache.org
Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build # 19448 - Unstable!
Posted by Chris Hostetter <ho...@fucit.org>.
: Yes, JDK 9 changed the default provider to be the compat one, but Java 21
: should already default to the CLDR. But maybe theres a difference in parsing.
Mmmm, I think you're mistaken somewhere ... jdk9, jdk11, jdk17, and jdk21
all say the default behavior is the same...
>> The default order for looking up the preferred locale providers is
>> "CLDR,COMPAT"
https://docs.oracle.com/javase/9/docs/api/java/util/spi/LocaleServiceProvider.html
https://docs.oracle.com/en%2Fjava%2Fjavase%2F11%2Fdocs%2Fapi%2F%2F/java.base/java/util/spi/LocaleServiceProvider.html
https://docs.oracle.com/en%2Fjava%2Fjavase%2F17%2Fdocs%2Fapi%2F%2F/java.base/java/util/spi/LocaleServiceProvider.html
https://docs.oracle.com/en%2Fjava%2Fjavase%2F21%2Fdocs%2Fapi%2F%2F/java.base/java/util/spi/LocaleServiceProvider.html
...and yet, as I noted in SOLR-17379, the French test works fine using
"java.locale.providers=CLDR" (no COMPAT at all) with jdk11 & jdk17 -- but
fails using jdk21
: Maybe in JDK21 based on this system property it accepts both locales during
: parsing, but formats to string using the primary one (CLDR). This would
: explain why the test works in earlier versions: Parsing is more lenient. Round
: trips would also have worked (it formats to new format, but parsing accepts
: both).
I think it works (by default) in older versions because of the COMPAT
locale, but prior to jdk21 the CLDR Locale can also work. Suggesting
it's impact by some change in the CLDR data between jdk17 and jdk21
: Not sure what's wrong with the French one, it does not fail on parsing, it
: asserts later that the epoch millis fit the expected one and there seems to be
: something wrong.
No, the French problem is definitely failing in the parsing -- See the
patch in SOLR-17379 -- I beefed up the logging and acording to the
DateTimeParseException from DateTimeFormatter (Unless i'm horribly
missunderstanding something) it doesn't want to recognize "vendredi" as a
"Text(DayOfWeek)" which is weird because AFAICT it's in
DateFormatSymbols.getInstance(new Locale("fr")).getWeekdays() even when
restricting to only java.locale.providers=CLDR.
: should work in all supported JDKs >=11. The test still asserts some JDK8
: behaviour, which cxannot be tested anymore. So it looks like the Alaska test
: is broken from beginning.
Yeah, i ripped that cruft out in my patch (based on the linked bug it
looks like the claims about failing on jdk>8 were only true for some early
9-ea builds, not even the released buidls)
: Am 24.07.2024 um 20:50 schrieb Chris Hostetter:
: > : the reason for this looks like it is because of the legacy timezone
: > database
: > : was removed and only CLDR was left over. It looks like this test uses a
: >
: > Right, ok -- yes thank you for the links. Most of that info is over my
: > head, but my main take aways are...
: >
: > 0) jdk8 (and earlier) had a single 'JRE' java.locale.providers
: > 1) jdk9 added 'CLDR' as a provider & aliased COMPAT=JRE
: > 2) jdk9 changed default == java.locale.providers=CLDR,COMPAT
: > 3) jdk23 removed the COMPAT provider
: > 4) jdk23 changed default == java.locale.providers=CLDR
: >
: > : Do we do anything like that (setting the COMPAT java.locale.providers
: > system
: > : property? I grepped through the reposity and have seen nothing to set the
: > : legacy sysprop.
: >
: > We do not, and I don't think it would make sense for us to do that.
: >
: > : If this still proves to be a bug we can open an issue - I will look into
: > this
: > : later (we need a testcase to show the issue that works with JDK 22 and the
: > : default JRE provider and fails with JDK-23). There could be 2 outcomes:
: >
: > I've confirmed that both tests fail using JDK21 if you specify
: > '-Djava.locale.providers=CLDR' in our 'tests.jvmargs' They pass with both
: > 'COMPAT,CLDR' or 'CLDR,COMPAT'
: >
: > So the problem is not "new" in jdk23-ea -- it's a situation where our
: > tests expect behavior that is only available from the COMPAT local
: > provider.
: >
: > In the case of testAKSTZone I can kind of understand why/how this might
: > happen if that CLDR version of Locale.ROOT doesn't support parsing the
: > "AKST" String as a TZ.
: >
: > I'm a little perplexed by the testParseFrenchDate failure ... I guess the
: > parsing rules for french are just a little different in CLDR (but it's
: > also hard to tell what exactly is going wrong based on where/how it fails
: > the test)
: >
: >
: > In either case -- it seems like the "correct" test fix is to introspect
: > the JVM, and assume/skip the test if COMPAT is not in use. Ideally we
: > should do this by checking behavior, and not explicitly inspecting the
: > LocaleServiceProvider. In the case of testAKSTZone this hsould be easy to
: > do if/when these exception is thrown (the place it's thrown is already
: > introspecting teh JVM behavior w/o actually testing any solr code). Not
: > sure what to do about testParseFrenchDate but I'll poke around and see if
: > i can figure it out.
: >
: >
: >
: > -Hoss
: > http://www.lucidworks.com/
: >
: > ---------------------------------------------------------------------
: > To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
: > For additional commands, e-mail: dev-help@solr.apache.org
: >
: --
: Uwe Schindler
: Achterdiek 19, D-28357 Bremen
: https://www.thetaphi.de
: eMail: uwe@thetaphi.de
:
:
: ---------------------------------------------------------------------
: To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
: For additional commands, e-mail: dev-help@solr.apache.org
:
:
-Hoss
http://www.lucidworks.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
For additional commands, e-mail: dev-help@solr.apache.org
Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build # 19448 - Unstable!
Posted by Uwe Schindler <uw...@thetaphi.de>.
I am not sure if this is 100% true,
Yes, JDK 9 changed the default provider to be the compat one, but Java
21 should already default to the CLDR. But maybe theres a difference in
parsing. Maybe in JDK21 based on this system property it accepts both
locales during parsing, but formats to string using the primary one
(CLDR). This would explain why the test works in earlier versions:
Parsing is more lenient. Round trips would also have worked (it formats
to new format, but parsing accepts both).
I think we should fix the test to use CLDR for its input strings (maybe
format the date once using the new rules and copypaste it into the
test). Those should work in all supported JDKs >=11. The test still
asserts some JDK8 behaviour, which cxannot be tested anymore. So it
looks like the Alaska test is broken from beginning.
Not sure what's wrong with the French one, it does not fail on parsing,
it asserts later that the epoch millis fit the expected one and there
seems to be something wrong.
Uwe
Am 24.07.2024 um 20:50 schrieb Chris Hostetter:
> : the reason for this looks like it is because of the legacy timezone database
> : was removed and only CLDR was left over. It looks like this test uses a
>
> Right, ok -- yes thank you for the links. Most of that info is over my
> head, but my main take aways are...
>
> 0) jdk8 (and earlier) had a single 'JRE' java.locale.providers
> 1) jdk9 added 'CLDR' as a provider & aliased COMPAT=JRE
> 2) jdk9 changed default == java.locale.providers=CLDR,COMPAT
> 3) jdk23 removed the COMPAT provider
> 4) jdk23 changed default == java.locale.providers=CLDR
>
> : Do we do anything like that (setting the COMPAT java.locale.providers system
> : property? I grepped through the reposity and have seen nothing to set the
> : legacy sysprop.
>
> We do not, and I don't think it would make sense for us to do that.
>
> : If this still proves to be a bug we can open an issue - I will look into this
> : later (we need a testcase to show the issue that works with JDK 22 and the
> : default JRE provider and fails with JDK-23). There could be 2 outcomes:
>
> I've confirmed that both tests fail using JDK21 if you specify
> '-Djava.locale.providers=CLDR' in our 'tests.jvmargs' They pass with both
> 'COMPAT,CLDR' or 'CLDR,COMPAT'
>
> So the problem is not "new" in jdk23-ea -- it's a situation where our
> tests expect behavior that is only available from the COMPAT local
> provider.
>
> In the case of testAKSTZone I can kind of understand why/how this might
> happen if that CLDR version of Locale.ROOT doesn't support parsing the
> "AKST" String as a TZ.
>
> I'm a little perplexed by the testParseFrenchDate failure ... I guess the
> parsing rules for french are just a little different in CLDR (but it's
> also hard to tell what exactly is going wrong based on where/how it fails
> the test)
>
>
> In either case -- it seems like the "correct" test fix is to introspect
> the JVM, and assume/skip the test if COMPAT is not in use. Ideally we
> should do this by checking behavior, and not explicitly inspecting the
> LocaleServiceProvider. In the case of testAKSTZone this hsould be easy to
> do if/when these exception is thrown (the place it's thrown is already
> introspecting teh JVM behavior w/o actually testing any solr code). Not
> sure what to do about testParseFrenchDate but I'll poke around and see if
> i can figure it out.
>
>
>
> -Hoss
> http://www.lucidworks.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
> For additional commands, e-mail: dev-help@solr.apache.org
>
--
Uwe Schindler
Achterdiek 19, D-28357 Bremen
https://www.thetaphi.de
eMail: uwe@thetaphi.de
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
For additional commands, e-mail: dev-help@solr.apache.org
Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build # 19448 - Unstable!
Posted by Chris Hostetter <ho...@fucit.org>.
https://issues.apache.org/jira/browse/SOLR-17379
: Date: Wed, 24 Jul 2024 11:50:55 -0700 (MST)
: From: Chris Hostetter <ho...@fucit.org>
: To: dev@solr.apache.org
: Subject: Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build
: # 19448 - Unstable!
:
:
: : the reason for this looks like it is because of the legacy timezone database
: : was removed and only CLDR was left over. It looks like this test uses a
:
: Right, ok -- yes thank you for the links. Most of that info is over my
: head, but my main take aways are...
:
: 0) jdk8 (and earlier) had a single 'JRE' java.locale.providers
: 1) jdk9 added 'CLDR' as a provider & aliased COMPAT=JRE
: 2) jdk9 changed default == java.locale.providers=CLDR,COMPAT
: 3) jdk23 removed the COMPAT provider
: 4) jdk23 changed default == java.locale.providers=CLDR
:
: : Do we do anything like that (setting the COMPAT java.locale.providers system
: : property? I grepped through the reposity and have seen nothing to set the
: : legacy sysprop.
:
: We do not, and I don't think it would make sense for us to do that.
:
: : If this still proves to be a bug we can open an issue - I will look into this
: : later (we need a testcase to show the issue that works with JDK 22 and the
: : default JRE provider and fails with JDK-23). There could be 2 outcomes:
:
: I've confirmed that both tests fail using JDK21 if you specify
: '-Djava.locale.providers=CLDR' in our 'tests.jvmargs' They pass with both
: 'COMPAT,CLDR' or 'CLDR,COMPAT'
:
: So the problem is not "new" in jdk23-ea -- it's a situation where our
: tests expect behavior that is only available from the COMPAT local
: provider.
:
: In the case of testAKSTZone I can kind of understand why/how this might
: happen if that CLDR version of Locale.ROOT doesn't support parsing the
: "AKST" String as a TZ.
:
: I'm a little perplexed by the testParseFrenchDate failure ... I guess the
: parsing rules for french are just a little different in CLDR (but it's
: also hard to tell what exactly is going wrong based on where/how it fails
: the test)
:
:
: In either case -- it seems like the "correct" test fix is to introspect
: the JVM, and assume/skip the test if COMPAT is not in use. Ideally we
: should do this by checking behavior, and not explicitly inspecting the
: LocaleServiceProvider. In the case of testAKSTZone this hsould be easy to
: do if/when these exception is thrown (the place it's thrown is already
: introspecting teh JVM behavior w/o actually testing any solr code). Not
: sure what to do about testParseFrenchDate but I'll poke around and see if
: i can figure it out.
:
:
:
: -Hoss
: http://www.lucidworks.com/
:
-Hoss
http://www.lucidworks.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
For additional commands, e-mail: dev-help@solr.apache.org
Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build # 19448 - Unstable!
Posted by Chris Hostetter <ho...@fucit.org>.
: the reason for this looks like it is because of the legacy timezone database
: was removed and only CLDR was left over. It looks like this test uses a
Right, ok -- yes thank you for the links. Most of that info is over my
head, but my main take aways are...
0) jdk8 (and earlier) had a single 'JRE' java.locale.providers
1) jdk9 added 'CLDR' as a provider & aliased COMPAT=JRE
2) jdk9 changed default == java.locale.providers=CLDR,COMPAT
3) jdk23 removed the COMPAT provider
4) jdk23 changed default == java.locale.providers=CLDR
: Do we do anything like that (setting the COMPAT java.locale.providers system
: property? I grepped through the reposity and have seen nothing to set the
: legacy sysprop.
We do not, and I don't think it would make sense for us to do that.
: If this still proves to be a bug we can open an issue - I will look into this
: later (we need a testcase to show the issue that works with JDK 22 and the
: default JRE provider and fails with JDK-23). There could be 2 outcomes:
I've confirmed that both tests fail using JDK21 if you specify
'-Djava.locale.providers=CLDR' in our 'tests.jvmargs' They pass with both
'COMPAT,CLDR' or 'CLDR,COMPAT'
So the problem is not "new" in jdk23-ea -- it's a situation where our
tests expect behavior that is only available from the COMPAT local
provider.
In the case of testAKSTZone I can kind of understand why/how this might
happen if that CLDR version of Locale.ROOT doesn't support parsing the
"AKST" String as a TZ.
I'm a little perplexed by the testParseFrenchDate failure ... I guess the
parsing rules for french are just a little different in CLDR (but it's
also hard to tell what exactly is going wrong based on where/how it fails
the test)
In either case -- it seems like the "correct" test fix is to introspect
the JVM, and assume/skip the test if COMPAT is not in use. Ideally we
should do this by checking behavior, and not explicitly inspecting the
LocaleServiceProvider. In the case of testAKSTZone this hsould be easy to
do if/when these exception is thrown (the place it's thrown is already
introspecting teh JVM behavior w/o actually testing any solr code). Not
sure what to do about testParseFrenchDate but I'll poke around and see if
i can figure it out.
-Hoss
http://www.lucidworks.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@solr.apache.org
For additional commands, e-mail: dev-help@solr.apache.org
Re: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build # 19448 - Unstable!
Posted by Uwe Schindler <uw...@thetaphi.de>.
Hi,
the reason for this looks like it is because of the legacy timezone
database was removed and only CLDR was left over. It looks like this
test uses a timezone identifier which is no longer a supported label. It
looks like the AKST has a special test. See also
https://openjdk.org/jeps/252 <https://openjdk.org/jeps/252>
Do we do anything like that (setting the COMPAT java.locale.providers
system property? I grepped through the reposity and have seen nothing to
set the legacy sysprop.
If this still proves to be a bug we can open an issue - I will look into
this later (we need a testcase to show the issue that works with JDK 22
and the default JRE provider and fails with JDK-23). There could be 2
outcomes:
* CLDR database changed and JDK 23 fails due to new version of this
database
* There is a real bug in parsing code.
If we use the compat database for some reason we may need to fix this test.
See David Delabasse's mail on lucene-dev mailing list:
> ### Locale Data in JDK 23
>
> JDK 23 [9] removes legacy locale data. As a consequence, setting
> java.locale.providers to JRE or COMPAT has no effect.
>
> Projects that are still using legacy locale data are highly encouraged
> to switch to CLDR as soon as possible. Where that is infeasible, two
> alternatives remain:
>
> - Create custom formatters with patterns that mimic the legacy
> behavior and use them everywhere where locale-sensitive data is
> written or parsed.
>
> - Implement a custom locale data provider [10].
>
> For more details on that as well as on CLDR in the JDK in general,
> please check JEP 252 [8] that has been recently rewritten to provide
> better information and guidance.
>
> [8] https://openjdk.org/jeps/252 <https://openjdk.org/jeps/252>
>
> [9] https://bugs.openjdk.org/browse/JDK-8325568
> <https://bugs.openjdk.org/browse/JDK-8325568>
>
> [10]
> https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/spi/LocaleServiceProvider.html
> <https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/spi/LocaleServiceProvider.html>
>
Am 23.07.2024 um 21:15 schrieb Chris Hostetter:
> Uwe: In the past 24 hours, 3 of your 64bit/hotspot/jdk-23-ea+33 jenkins
> builds have all failed on these 2 (Locale related) tests (w/diff seeds
> that don't reproduce for me on released jdks)
>
> Perhaps there is a new Locale based date parsing issue in the latest EA
> that you could look into and report to openJDK?
>
>
>
> : Date: Tue, 23 Jul 2024 15:09:33 +0000 (UTC)
> : From: Policeman Jenkins Server<je...@thetaphi.de>
> : Reply-To:dev@solr.apache.org
> : To:builds@solr.apache.org
> : Subject: [JENKINS-EA] Solr-main-Linux (64bit/hotspot/jdk-23-ea+33) - Build #
> : 19448 - Unstable!
> :
> : Build:https://jenkins.thetaphi.de/job/Solr-main-Linux/19448/
> : Java: 64bit/hotspot/jdk-23-ea+33 -XX:-UseCompressedOops -XX:+UseG1GC
> :
> : 2 tests failed.
> : FAILED: org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testAKSTZone
> :
> : Error Message:
> : java.time.format.DateTimeParseException: Text 'Thu Nov 13 04:35:51 AKST 2008' could not be parsed at index 20
> :
> : Stack Trace:
> : java.time.format.DateTimeParseException: Text 'Thu Nov 13 04:35:51 AKST 2008' could not be parsed at index 20
> : at __randomizedtesting.SeedInfo.seed([B84D991968485BB1:B8763855675AE20A]:0)
> : at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2108)
> : at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:2010)
> : at org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testAKSTZone(ParsingFieldUpdateProcessorsTest.java:1079)
> : at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> : at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> : 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.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
> : at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
> : at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
> : 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 com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
> : 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.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
> : at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
> : at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
> : at java.base/java.lang.Thread.run(Thread.java:1575)
> :
> :
> : FAILED: org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testParseFrenchDate
> :
> : Error Message:
> : java.lang.AssertionError
> :
> : Stack Trace:
> : java.lang.AssertionError
> : at __randomizedtesting.SeedInfo.seed([B84D991968485BB1:F1D6EFB1A35A7380]:0)
> : at org.junit.Assert.fail(Assert.java:87)
> : at org.junit.Assert.assertTrue(Assert.java:42)
> : at org.junit.Assert.assertTrue(Assert.java:53)
> : at org.apache.solr.update.processor.ParsingFieldUpdateProcessorsTest.testParseFrenchDate(ParsingFieldUpdateProcessorsTest.java:253)
> : at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> : at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> : 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.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
> : at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
> : at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
> : 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 com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
> : 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.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
> : at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
> : at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
> : at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
> : at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
> : at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> : at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> : at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
> : at java.base/java.lang.Thread.run(Thread.java:1575)
> :
>
> -Hoss
> http://www.lucidworks.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:dev-unsubscribe@solr.apache.org
> For additional commands, e-mail:dev-help@solr.apache.org
>
--
Uwe Schindler
Achterdiek 19, D-28357 Bremen
https://www.thetaphi.de
eMail:uwe@thetaphi.de