[ 
https://issues.apache.org/jira/browse/GROOVY-7528?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14647414#comment-14647414
 ] 

Jochen Theodorou commented on GROOVY-7528:
------------------------------------------

This kind of error is normally related to problem with the generics information 
in the bytecode. I would like to give GROOVY-7298 as an example here. So I 
cannot tell for sure if it is a JDK bug or a Groovy one (of course JDK not 
being influenced suggest a JDK bug). In both cases we would have to identify 
the problematic method signature.  Your exception stack suggests a problem not 
in a script itself, but in a dependency which has a method using a wildcard in 
a return type. 

> AssertionError at 
> sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getLowerBoundASTs 
> since Groovy 2.4.0 upgrade
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-7528
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7528
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.4.4
>            Reporter: Adrien Grand
>            Priority: Minor
>
> Since we upgraded from Grooy 2.4.0 to Groovy 2.4.4, we have been seeing 
> occasional assertion errors in 
> {{sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getLowerBoundASTs}}.
> Here is the relevant stack trace:
> {noformat}
> java.lang.AssertionError
>       at 
> sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getLowerBoundASTs(WildcardTypeImpl.java:94)
>       at 
> sun.reflect.generics.reflectiveObjects.WildcardTypeImpl.getLowerBounds(WildcardTypeImpl.java:165)
>       at com.sun.beans.TypeResolver.resolve(TypeResolver.java:176)
>       at com.sun.beans.TypeResolver.resolve(TypeResolver.java:218)
>       at com.sun.beans.TypeResolver.resolve(TypeResolver.java:169)
>       at com.sun.beans.TypeResolver.resolveInClass(TypeResolver.java:81)
>       at 
> java.beans.FeatureDescriptor.getReturnType(FeatureDescriptor.java:370)
>       at java.beans.Introspector.getTargetEventInfo(Introspector.java:996)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:417)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:163)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:250)
>       at java.beans.Introspector.<init>(Introspector.java:397)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:163)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:250)
>       at java.beans.Introspector.<init>(Introspector.java:397)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:163)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:250)
>       at java.beans.Introspector.<init>(Introspector.java:397)
>       at java.beans.Introspector.getBeanInfo(Introspector.java:163)
>       at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3292)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3290)
>       at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3266)
>       at 
> org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:254)
>       at 
> org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:285)
>       at 
> org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:257)
>       at 
> org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:875)
>       at groovy.lang.GroovyObjectSupport.<init>(GroovyObjectSupport.java:34)
>       at groovy.lang.Script.<init>(Script.java:42)
>       at groovy.lang.Script.<init>(Script.java:39)
>       at Script4.<init>(Script4.groovy)
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>       at java.lang.Class.newInstance(Class.java:374)
>       at 
> org.elasticsearch.script.groovy.GroovyScriptEngineService.createScript(GroovyScriptEngineService.java:129)
>       at 
> org.elasticsearch.script.groovy.GroovyScriptEngineService.access$100(GroovyScriptEngineService.java:57)
>       at 
> org.elasticsearch.script.groovy.GroovyScriptEngineService$1.getLeafSearchScript(GroovyScriptEngineService.java:165)
>       at 
> org.elasticsearch.search.aggregations.support.ValuesSource$Numeric$WithScript.doubleValues(ValuesSource.java:314)
>       at 
> org.elasticsearch.search.aggregations.metrics.sum.SumAggregator.getLeafCollector(SumAggregator.java:74)
>       at 
> org.elasticsearch.search.aggregations.AggregatorBase.getLeafCollector(AggregatorBase.java:132)
>       at 
> org.elasticsearch.search.aggregations.AggregatorBase.getLeafCollector(AggregatorBase.java:131)
>       at 
> org.elasticsearch.search.aggregations.AggregatorBase.getLeafCollector(AggregatorBase.java:38)
>       at 
> org.apache.lucene.search.MultiCollector.getLeafCollector(MultiCollector.java:117)
>       at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:762)
>       at 
> org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:196)
>       at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:485)
>       at 
> org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:174)
>       at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:694)
>       at 
> org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:410)
>       at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:439)
>       at 
> org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:151)
> {noformat}
> I found this old thread suggesting that the JDK code may not be correct and 
> asking whether someone saw this assertion trip in the wild: 
> http://osdir.com/ml/core-libs-dev/2014-11/msg00337.html so this might be a 
> JDK bug rather than a Groovy bug. However we didn't see this assertion error 
> before we upgraded, so maybe there is a related Groovy change that made it 
> more likely to happen? Like the email thread mentions, one reason why few 
> people hit this assertion error might be that few people run with system 
> assertions (-esa).
> We have only seen this assertion trip on a JDK 7 (not 8) but I couldn't find 
> any information related to fixing WildcardTypeImpl between JDK7 and JDK8, so 
> I'm not totally sure the problem is fixed if running with JDK 8. It might 
> just be rarer.
> If you have confidence this is a JDK bug and not a Groovy bug, please feel 
> free to close it. Hopefully this will at least serve for future reference if 
> anyone else hits the same issue.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to