Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1228524

Summary: Errors in concurrent same package building in Guvnor
Product: [JBoss] JBoss Enterprise BRMS Platform 5 Reporter: Toshiya Kobayashi <tkobayas>
Component: BRM (Guvnor)Assignee: manstis
Status: CLOSED UPSTREAM QA Contact:
Severity: high Docs Contact:
Priority: unspecified    
Version: BRMS 5.3.1   
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-02-10 03:47:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Toshiya Kobayashi 2015-06-05 06:36:18 UTC
Description of problem:

If 2 users concurrently build the same package in Guvnor GUI. Both building fail and get various Exceptions like:

Caused by: java.lang.ClassFormatError: Unknown constant tag 0 in class file defaultPackage/Rule_HelloWorld_11_94e9d6f5c2ea4bb181986ffda580c3a8DefaultConsequenceInvoker
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at org.drools.rule.JavaDialectRuntimeData$PackageClassLoader.fastFindClass(JavaDialectRuntimeData.java:576)
        at org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:254)
        at org.drools.util.CompositeClassLoader$CachingLoader.load(CompositeClassLoader.java:237)
        at org.drools.util.CompositeClassLoader.loadClass(CompositeClassLoader.java:88)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at org.drools.rule.JavaDialectRuntimeData.wire(JavaDialectRuntimeData.java:409)
        at org.drools.rule.JavaDialectRuntimeData.wire(JavaDialectRuntimeData.java:400)
        at org.drools.rule.JavaDialectRuntimeData.onBeforeExecute(JavaDialectRuntimeData.java:241)
        at org.drools.rule.DialectRuntimeRegistry.onBeforeExecute(DialectRuntimeRegistry.java:134)
        at org.drools.compiler.PackageBuilder.reloadAll(PackageBuilder.java:1025)
        at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:976)
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:405)
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:380)
        at org.drools.guvnor.server.contenthandler.DecisionTableXLSHandler.compile(DecisionTableXLSHandler.java:71)
        at org.drools.guvnor.server.builder.PackageAssemblerBase.compile(PackageAssemblerBase.java:76)
...


15:30:28,149 ERROR [RepositoryServiceServlet] Service method 'public abstract org.drools.guvnor.client.rpc.BuilderResult org.drools.guvnor.client.rpc.PackageService.buildPackage(java.lang.String,boolean,java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String,boolean,java.lang.String) throws com.google.gwt.user.client.rpc.SerializationException' threw an unexpected exception: java.lang.ArrayIndexOutOfBoundsException: -1
java.lang.ArrayIndexOutOfBoundsException: -1
        at org.mvel2.asm.Frame.merge(Frame.java:1373)
        at org.mvel2.asm.Frame.merge(Frame.java:1350)
        at org.mvel2.asm.MethodWriter.visitMaxs(MethodWriter.java:1282)
        at org.drools.rule.builder.dialect.asm.ClassGenerator$MethodDescr.write(ClassGenerator.java:493)
        at org.drools.rule.builder.dialect.asm.ClassGenerator.generateBytecode(ClassGenerator.java:50)
        at org.drools.rule.builder.dialect.asm.ASMConsequenceBuilder.createConsequenceBytecode(ASMConsequenceBuilder.java:115)
        at org.drools.rule.builder.dialect.asm.AbstractASMConsequenceBuilder.build(AbstractASMConsequenceBuilder.java:21)
        at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:99)
        at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:2576)
        at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:970)
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:405)
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:380)
        at org.drools.guvnor.server.contenthandler.DecisionTableXLSHandler.compile(DecisionTableXLSHandler.java:71)
        at org.drools.guvnor.server.builder.PackageAssemblerBase.compile(PackageAssemblerBase.java:76)
...


Caused by: java.lang.VerifyError: (class: defaultPackage/Rule_HelloWorld_31_bdcb0e5294cf4dc0a9da85d2033d1bd2DefaultConsequenceInvoker, method: equals signature: (Ljava/lang/Object;)Z) Incompatible object argument for function call
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2532)
        at java.lang.Class.getConstructor0(Class.java:2842)
        at java.lang.Class.newInstance(Class.java:345)
        at org.drools.rule.JavaDialectRuntimeData.wire(JavaDialectRuntimeData.java:413)
        at org.drools.rule.JavaDialectRuntimeData.wire(JavaDialectRuntimeData.java:400)
        at org.drools.rule.JavaDialectRuntimeData.onBeforeExecute(JavaDialectRuntimeData.java:241)
        at org.drools.rule.DialectRuntimeRegistry.onBeforeExecute(DialectRuntimeRegistry.java:134)
        at org.drools.compiler.PackageBuilder.reloadAll(PackageBuilder.java:1025)
        at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:976)
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:405)
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:380)
        at org.drools.guvnor.server.contenthandler.DecisionTableXLSHandler.compile(DecisionTableXLSHandler.java:71)
        at org.drools.guvnor.server.builder.PackageAssemblerBase.compile(PackageAssemblerBase.java:76)
        at org.drools.guvnor.server.builder.PackageAssemblerBase.buildAsset(PackageAssemblerBase.java:59)
        at org.drools.guvnor.server.builder.PackageAssembler.addAsset(PackageAssembler.java:99)
        at org.drools.guvnor.server.builder.PackageAssembler.loadAllButDRLAssets(PackageAssembler.java:83)
        at org.drools.guvnor.server.builder.PackageAssembler.loadAssets(PackageAssembler.java:73)
        at org.drools.guvnor.server.builder.PackageAssembler.buildPackage(PackageAssembler.java:65)
        at org.drools.guvnor.server.builder.PackageAssembler.compile(PackageAssembler.java:55)
....

Actually, I can easily reproduce it by concurrently building the same package even without selector. (Used a large package. for example: )


How reproducible:

If the package is large, easy to reproduce.

Steps to Reproduce:
1. Start BRMS 5.3.1
2. Login as admin with 2 browsers
3. In Browser A, Import https://mocha.nrt.redhat.com/dav-readonly/temp/tkobayas/share/repository_export_large_pacakge_level_1.zip
4. In Browser A, build 'defaultPacakge'
5. In Browser B, build 'defaultPacakge'

Actual results:

Both building fail and get various Exceptions like:

Expected results:

Browser A successfully builds the package. Browser B build is just rejected.

Or

Both build the package successfully and the later one (Browser B) overwrites the result.

Comment 2 Toshiya Kobayashi 2015-06-05 06:38:57 UTC
Doesn't reproduce in BRMS 6.1.1.

Comment 3 Toshiya Kobayashi 2016-04-12 05:15:15 UTC
NOTE: This Exception occurs even in concurrent builds for different packages.

Comment 4 Toshiya Kobayashi 2016-04-12 08:59:45 UTC
Filed BZ1326245 for the "different packages" case.

Comment 6 Red Hat Bugzilla 2025-02-10 03:47:42 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.