[ https://issues.apache.org/jira/browse/GROOVY-8805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16640606#comment-16640606 ]
ASF GitHub Bot commented on GROOVY-8805: ---------------------------------------- Github user asfgit closed the pull request at: https://github.com/apache/groovy/pull/799 > GroovyScriptEngine reload fails when dependent class is deleted > --------------------------------------------------------------- > > Key: GROOVY-8805 > URL: https://issues.apache.org/jira/browse/GROOVY-8805 > Project: Groovy > Issue Type: Bug > Components: GroovyScriptEngine > Affects Versions: 2.4.15, 2.5.2 > Reporter: Gary Clayburg > Priority: Major > > When using GroovyScriptEngine.loadScriptByName(scriptName), the reloading > will fail with a groovy.util.ResourceException if a dependent class has been > removed from the script root filesystem. To reproduce this issue, start with > a script and a dependent class: > ClassA.groovy > {code:java} > DependentClass ic = new DependentClass(){code} > > DependentClass.groovy > > {code:java} > class DependentClass {} > > {code} > > When these classes are initially compiled with GroovyScriptEngine, things > work fine. There are no errors when loading the script like this: > > {code:java} > gse.loadScriptByName('ClassA.groovy'){code} > > However, once DependentClass.groovy is completely removed from the filesystem > and ClassA is modified to remove the reference, the same > gse.loadScriptByName('ClassA.groovy') will fail with a > groovy.utilResourceExeption. > > It appears GroovyScriptEngine keeps a dependency cache and gets confused in > this case. The line that fails is a check for lastModifedTime of this > dependency. The dependency of course no longer exists, but the check for > lastModiedTime occurs before ClassA compile has been attempted. > > I am working on a PR that fixes this. It seems to me that inside > gse.isSourceNewer(entry), it can just treat a ResourceException during > getLastModifed(scriptName) as an indication to just attempt a recompile > instead of throwing the exception. > > -- This message was sent by Atlassian JIRA (v7.6.3#76005)