Paul King wrote:
I would guess two versions of the class loaded by two different class loaders? Can you describe what if any class loading arrangement the server might have in place?
We have a Spring singleton bean that holds an instance of groovy.lang.GroovyClassLoader. The GroovyClassLoader's parent is an intercepting class loader that merely prevents certain classes from being loaded and otherwise delegates to it's parent, the Spring bean's class loader. The Spring context is not being refreshed while the server is running. Scripts are parsed by the GroovyClassLoader instance and cached locally (until the script source changes). I don't know if users can circumvent the usage of this class loader by using certain Groovy features in their scripts. However, if the class loader plays a role in caching methods in the MetaMethodIndex, I would expect that the same identity rules would apply for putting methods in the cache as for retrieving them. So duplicate entries should not be possible. -- Cheers, Alex