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: | |||
Doesn't reproduce in BRMS 6.1.1. NOTE: This Exception occurs even in concurrent builds for different packages. Filed BZ1326245 for the "different packages" case. This product has been discontinued or is no longer tracked in Red Hat Bugzilla. |
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.