groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jex Jexler (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GROOVY-7407) Compilation not thread safe if Grape / Ivy is used in Groovy scripts
Date Tue, 14 Mar 2017 10:40:42 GMT

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

Jex Jexler commented on GROOVY-7407:
------------------------------------

Actual stacktrace that causes the compilation error:
{noformat}
org.codehaus.groovy.syntax.SyntaxException: unable to resolve class com.google.common.base.Ascii
 @ line 1, column 1.
	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:150)
	at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1241)
	at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:176)
	at org.codehaus.groovy.control.CompilationUnit$12.call(CompilationUnit.java:663)
	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:554)
	at GroovyCompileConcurrencyTest$1.run(GroovyCompileConcurrencyTest.java:42)
	at java.lang.Thread.run(Thread.java:745)
{noformat}

> Compilation not thread safe if Grape / Ivy is used in Groovy scripts
> --------------------------------------------------------------------
>
>                 Key: GROOVY-7407
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7407
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler, Grape
>    Affects Versions: 2.4.3
>         Environment: Essentially independent of the environment, as long as Groovy scripts
use Grape; also this bug seems to be present since at least Groovy 1.7.5.
>            Reporter: Jex Jexler
>            Priority: Minor
>              Labels: Compile, Grape, Groovy, Ivy
>         Attachments: GrapeAndGroovyShellConcurrencyTest.java, GroovyCompileConcurrencyTest.java,
stacktrace-GrapeAndGroovyShellConcurrencyTest-1.txt, stacktrace-GrapeAndGroovyShellConcurrencyTest-2.txt,
stacktrace-GroovyCompileConcurrencyTest-1.txt, stacktrace-GroovyCompileConcurrencyTest-2.txt,
WorkaroundGroovy7407WrappingGrapeEngine.java
>
>
> If Groovy scripts that import the same libraries via Grape are compiled in separate threads,
compilation may fail due to race conditions.
> This does not happen if several threads use the *same* instance of GroovyClassLoader
(GCL), because parseClass() uses synchronization.
> But as soon as different GCLs are used in separate threads or if the compiler is used
directly (CompilationUnit.compile()), the issue occurs and compilation can fail.
> Two Java unit tests have be attached, which reproduce the issue, although this cannot
be guaranteed with 100% certainty, because there is a race condition.
> Two different stacktraces have been observed for each unit test (with origins in Grape
and in Ivy), which have also been attached (plus in a different environment (Tomcat webapp
CentOS) once a an exception down in Ivy had been observed that seemed to be related to unzipping
a JAR file, but no precise record of that exists any more).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message