Hi Dawid,

So if we want this to be included in 8u162 [1] (to be released on January 2018), we better hurry up and submit a backported patch before end of October...

I can sponsor the patch. Will you be willing to prepare it or do you need some help?

I think it should be a straightforward backport of JDK-8065172 [2].

Regards, Peter

[1] http://openjdk.java.net/projects/jdk8u/releases/8u162.html
[2] https://bugs.openjdk.java.net/browse/JDK-8065172

On 10/17/17 12:41, Dawid Weiss wrote:
Hi Peter,

Thanks for the pointer. Whether or not this fix should be backported
to 8u is probably not for me to decide... but if I can provide some
rationale then I think it'd be better to backport for the following
reasons:

- This assertion isn't frequent, but it does happen from time to time.
Robert Muir also let me know in a private conversation that the
assertion was triggered from time to time in Lucene tests; the test
that mostly caused it to happen has been since disabled (for unrelated
reasons).

- I quickly grepped the most recent Solr/Lucene logs and I see that
the assertion can be buried deep (in the suppressed exceptions chain),
which may be easily overlooked or raise false other concerns. Look at
the stack trace [1] below, for example.

- We run tests on multiple different JVMs/ systems and I'm 99%
confident I've seen errors with this assertion on IBM's J9 too, so it
affects the whole Java ecosystem, not just OpenJDK?

Dawid

[1] Build: https://jenkins.thetaphi.de/job/Lucene-Solr-master-Linux/20468/

5 tests failed.
FAILED:  
junit.framework.TestSuite.org.apache.solr.analytics.facet.QueryFacetCloudTest

Error Message:
Error starting up MiniSolrCloudCluster

java.lang.Exception: Error starting up MiniSolrCloudCluster
         at __randomizedtesting.SeedInfo.seed([954FE60C5C176808]:0)
         at 
org.apache.solr.cloud.MiniSolrCloudCluster.checkForExceptions(MiniSolrCloudCluster.java:507)
         at 
org.apache.solr.cloud.MiniSolrCloudCluster.<init>(MiniSolrCloudCluster.java:251)
         at 
org.apache.solr.cloud.SolrCloudTestCase$Builder.configure(SolrCloudTestCase.java:190)
         at 
org.apache.solr.analytics.facet.AbstractAnalyticsFacetCloudTest.setupCluster(AbstractAnalyticsFacetCloudTest.java:56)
         at 
org.apache.solr.analytics.facet.QueryFacetCloudTest.beforeClass(QueryFacetCloudTest.java:44)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
         at java.lang.reflect.Method.invoke(Method.java:498)
         at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1737)
         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:874)
         at 
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:890)
         at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
         at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
         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 
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:368)
         at java.lang.Thread.run(Thread.java:748)
         Suppressed: java.lang.AssertionError
                 at
sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getUpperBoundASTs(WildcardTypeImpl.java:86)
                 at
sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getUpperBounds(WildcardTypeImpl.java:122)
                 at
sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.toString(WildcardTypeImpl.java:190)
                 at java.lang.reflect.Type.getTypeName(Type.java:46)
                 at
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.toString(ParameterizedTypeImpl.java:234)
                 at java.lang.reflect.Type.getTypeName(Type.java:46)
                 at
java.lang.reflect.Method.specificToGenericStringHeader(Method.java:421)
                 at
java.lang.reflect.Executable.sharedToGenericString(Executable.java:163)
                 at java.lang.reflect.Method.toGenericString(Method.java:415)
                 at java.beans.MethodRef.set(MethodRef.java:46)
                 at
java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:117)
                 at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:72)
                 at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:56)
                 at
java.beans.Introspector.getTargetMethodInfo(Introspector.java:1205)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:426)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:173)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:260)
                 at java.beans.Introspector.<init>(Introspector.java:407)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:173)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:260)
                 at java.beans.Introspector.<init>(Introspector.java:407)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:173)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:260)
                 at java.beans.Introspector.<init>(Introspector.java:407)
                 at java.beans.Introspector.getBeanInfo(Introspector.java:173)
                 at
org.apache.solr.util.SolrPluginUtils.findSetter(SolrPluginUtils.java:1027)
                 at
org.apache.solr.util.SolrPluginUtils.invokeSetters(SolrPluginUtils.java:1011)
                 at
org.apache.solr.util.SolrPluginUtils.invokeSetters(SolrPluginUtils.java:1000)

On Tue, Oct 17, 2017 at 12:13 PM, Peter Levart <peter.lev...@gmail.com> wrote:
Hi Dawid,

The [2] mentions a thread which resulted in a patch by Martin Bucholtz for
JDK 9:

https://bugs.openjdk.java.net/browse/JDK-8065172

...but it seems this has not been backported to 8u (yet). The question is,
will there be any more 8u releases? Would you like this to be backported to
8u?

Regards, Peter


On 10/13/2017 09:53 AM, Dawid Weiss wrote:
Hi all,

We are observing very infrequent assertion errors originating in
getUpperBoundASTs, mostly during concurrent builds on our build
machine, when it's under a heavy load. This has been happening from
time to time with various Java versions; most recently with 1.8.0_131.

I don't see anything in Jira about it, but even a quick Google search
yields some hits [1].

The stack trace starts with (I include the jackson stack frame which calls
it):

java.lang.AssertionError: null
at
sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getUpperBoundASTs(WildcardTypeImpl.java:86)
~[?:1.8.0_131]
at
sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getUpperBounds(WildcardTypeImpl.java:122)
~[?:1.8.0_131]
at
com.fasterxml.jackson.databind.type.TypeFactory._fromWildcard(TypeFactory.java:1424)
~[jackson-databind-2.8.2.jar:2.8.2]

The problem cannot be easily reproduced, but I see a comment mentioned
on the core-libs-dev a while ago [2] by Joel Borggrén-Franck, so
perhaps his question is a valid one and worth investigating:

Btw, has anyone seen the assert for upper/lower bounds == null fail in
the wild?
Dawid

[1]
https://www.google.com/search?q=getUpperBoundASTs+AssertionError&filter=0&biw=1279&bih=863
(note the "[JENKINS] Lucene-olr-master-Linux" hit).

[2] http://markmail.org/message/4phfnh7dj3qdlo6b

Reply via email to