[rules-users] Linkage Error In execute method

Davide Sottara dsotty at gmail.com
Sat Apr 5 02:48:40 EDT 2014


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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140404/870fd026/attachment.html 


More information about the rules-users mailing list