[ https://issues.jboss.org/browse/JBRULES-2253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Proctor updated JBRULES-2253:
----------------------------------
Fix Version/s: 5.3.0.M1
(was: 5.2.0.M1)
> ClassNotFound when ASM optimizer kicks in in MVEL consequence
> -------------------------------------------------------------
>
> Key: JBRULES-2253
> URL: https://issues.jboss.org/browse/JBRULES-2253
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: drools-core
> Affects Versions: 5.0.1.FINAL
> Reporter: Michael Neale
> Assignee: Tihomir Surdilovic
> Priority: Critical
> Fix For: 5.3.0.M1
>
> Attachments: repository_export_mic.zip
>
>
> (ok if the subject is really confusing, perhaps this bug isn't for you).
> In chasing down JBRULES-2234 I found this. Instructions (apologies for relying on Guvnor to reproduce):
> To reproduce is not
> easy, but here are some instructions:
> * Run latest Guvnor (if you are able to, if not, then the rest is moot !).
> * Import the attached repo (unzip it first).
> * browse to KnowledgeBases/org/acme/insurance/pricing/
> - press "build package"
> * shut it down, restart (flushes caches etc...)
> Then:
> * browse to KnowledgeBases/org/acme/insurance/pricing/Test Scenarios
> * open PolicyQuotePackageTest
> * run it:
> Now you should see an exception like this:
> Caused by: java.lang.NoClassDefFoundError: org/acme/insurance/Policy
> at ASMAccessorImpl_62408281250565694450.setValue(Unknown Source)
> at org.mvel2.optimizers.dynamic.DynamicSetAccessor.setValue(DynamicSetAccessor.java:74)
> at org.mvel2.compiler.CompiledAccExpression.setValue(CompiledAccExpression.java:47)
> at org.mvel2.MVEL.executeSetExpression(MVEL.java:962)
> at org.mvel2.ast.WithNode$ParmValuePair.eval(WithNode.java:242)
> at org.mvel2.ast.WithNode.getReducedValueAccelerated(WithNode.java:67)
> at org.mvel2.ast.InterceptorWrapper.getReducedValueAccelerated(InterceptorWrapper.java:38)
> at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
> at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:104)
> at org.mvel2.MVEL.executeExpression(MVEL.java:995)
> at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:91)
> at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:966)
> This is due to it loading a previously serialized version of the KB.
> If it was to run off a freshly compiled one, its all fine. Also, if I
> tell MVEL to NOT use ASM optimizer, it works fine (using reflection).
> So clearly the stuff is available to the classpath in the right
> places... its only to do with ASM in mvel post deserialization. (and
> for that to happen, MVEL has to execute the compiled expression enough
> to kick in the JIT).
> MVELCompilationUnit in drools is worth examining too... still not sure where the problem lies.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira