In the comments of https://issues.apache.org/jira/browse/GROOVY-6491 Bob Saenger suggested to "remove the Eclipse-BuddyPolicy from the groovy-all Manifest".

I guess it's time to remove it (I have no knowledge of OSGi)?

Cheers,
Pascal

Am 30.07.2015 um 17:22 schrieb Wolfgang Pedot:
Some new information:

Appearantly the problem is the Buddy-Policy in the groovy-all bundle, groovy searches for BeanInfo and Customizer-classes for all my scripts and since there are none it also checks all its buddy-bundles (which according to the manifest are all bundles which have a dependency on groovy-all) and that is what triggers this. I removed the Buddy-Policy and DynamicImport statements from the groovy-all manifest and my scripts are still loaded and executed fine but all those jar-checks are now gone.

Wolfgang

Am 30.07.2015 16:46, schrieb Wolfgang Pedot:
Hi again,

searching for the causes of a sudden increase in script-compile time in an OSGi application I am now investigating classloading.
Here is the simplified scenario:

OSGi application with lots of bundles, one of which (lets call it bundle A) uses GroovyScriptEngines to load small scripts for customisations, these scripts can work with classes imported from other bundles. There are lots of other bundles to, one of which has some embedded jars in its bundle-classpath, lets call that one bundle B. And of corse there is also a groovy-all bundle (from embeddable-dir of binary distribution). As soon as there is a dependency from bundle B on anything from the groovy-bundle (like an import of groovy.lang) the script-compile times (and first execution-times) of the GroovyScriptEngine in bundle A skyrocket because the jars in the bundle-classpath of bundle B get accessed like crazy during compilation and first execution.

I noticed that even though I use the classloader of bundle A as parent for the GroovyScriptEngine the groovy-bundle gains some dependencies on my bundles at runtime and that basically creates some sort of dependency-cycle between the groovy-bundle and bundles A/B which leads to those exessive reads of the lib-jars in bundle B. All I need in bundle B is a reference to Closure because there is one class that has gained a method which accepts a Closure as an argument....

I hope I have explained the situation clearly, does anyone have an idea or a tip what to do here? Whats interesting is that this only appears to be a problem in the deployed application, when I run it inside Eclipse I do not see that many read-accesses....

regards
Wolfgang Pedot


Reply via email to