Can you upgrade to 5.6? Otherwise, you'll have to synchronize the methods int ClassLoader, the null check is not enough
On 04/04/2014 09:16 PM, Karan Malhotra wrote: > > Hi All, > > > > We have recently upgraded our application from 5.1.0 to 5.4.0.Final. > > > > Everything worked well until this was deployed at Production Envr. We > started getting multiple Linkage Error in execute method of Stateless > KnowledgeSession. > > > > StackTrace: > > > > Exception: java.util.concurrent.ExecutionException: > java.lang.LinkageError: loader (instance > oforg/drools/rule/JavaDialectRuntimeData$PackageClassLoader): > attemptedduplicate class definition for name: > "OffBarCapping/Rule_Off_Bar_Tariff_Capping_13_2a4a909def69414bbd60cdfdac9ad807"| > > > > OffBarCapping/Rule_Off_Bar_Tariff_Capping_16_6b6f1282708449448fc434e820fa8e1f# > > at > OffBarCapping.Rule_Off_Bar_Tariff_Capping_16_6b6f1282708449448fc434e820fa8e1fPredicate0InvokerGenerated.evaluate(Unknown > Source)# at > OffBarCapping.Rule_Off_Bar_Tariff_Capping_16_6b6f1282708449448fc434e820fa8e1fPredicate0Invoker.evaluate(Unknown > Source)# at > org.drools.rule.PredicateConstraint.isAllowed(PredicateConstraint.java:299)# > at > org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)# > at > org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)# > > at > org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)# > > at > org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)# > at > org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)# > at > org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:337)# > at > org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:298)# > at > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:888)# > > at > org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)# > > at > org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)# > > at > org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:294)# > > > > 1. Some surfing on the internet referred us to a similar JIRA > issue:- JBRULES-3675 <https://issues.jboss.org/browse/JBRULES-3675> > > It says this has been fixed in 6.0.0. We were not in a position to > upgrade to 6.0.0 right away and hence decide to apply a patch in > drools-core-5.4.0.Final.jar > > > > Drools: 5.4.0 > > public Class<?> More ...fastFindClass( final String name ) { > > Class<?> cls = findLoadedClass( name ); > > > > if (cls == null) { > > final byte[] clazzBytes = this.store.read( > convertClassToResourcePath( name ) ); > > if (clazzBytes != null) { > > String pkgName = name.substring( 0, > > name.lastIndexOf( > '.' ) ); > > if (getPackage( pkgName ) == null) { > > definePackage( pkgName, > > "", > > "", > > "", > > "", > > "", > > "", > > null ); > > } > > > > cls = defineClass( name, > > clazzBytes, > > 0, > > clazzBytes.length, > > PROTECTION_DOMAIN ); > > } > > if (cls != null) { > > resolveClass( cls ); > > } > > } > > return cls; > > } > > > > Path applied:- > > > > public Class fastFindClass(String name) > > { > > Class cls = findLoadedClass(name); > > if(cls == null) > > { > > byte clazzBytes[] = > store.read(JavaDialectRuntimeData.convertClassToResourcePath(name)); > > if(clazzBytes != null) > > { > > String pkgName = name.substring(0, name.lastIndexOf('.')); > > if(!existingPackages.contains(pkgName)) > > { > > synchronized(this) > > { > > if(!existingPackages.contains(pkgName)) > > { > > if(getPackage(pkgName) == null) > > { > > definePackage(pkgName, "", "", "", "", > "", "", null); > > } > > existingPackages.add(pkgName); > > } > > } > > } > > cls = defineClass(name, clazzBytes, 0, > clazzBytes.length, JavaDialectRuntimeData.access$000()); > > } > > if(cls != null) > > { > > resolveClass(cls); > > } > > } > > return cls; > > } > > > > But we are still getting this Error. > > > > Let me know if any one did face a similar issue and solution for the same. > > > > Thanks and regards, > > Karan Malhotra > > > The contents of this email, including the attachments, are > *PRIVILEGED AND CONFIDENTIAL* to the intended recipient at > the email address to which it has been addressed. If you > receive it in error, please notify the sender immediately by > return email and then permanently delete it from your > system. The unauthorized use, distribution, copying or > alteration of this email, including the attachments, is > strictly forbidden. Please note that neither MakeMyTrip nor > the sender accepts any responsibility for viruses and it is > your responsibility to scan the email and attachments (if > any). No contracts may be concluded on behalf of > *MakeMyTrip* by means of email communications. > > > > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users