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