Bug 1326245

Summary: Errors in concurrent different packages building in Guvnor
Product: [JBoss] JBoss Enterprise BRMS Platform 5 Reporter: Toshiya Kobayashi <tkobayas>
Component: BRE (Expert, Fusion), BRM (Guvnor)Assignee: Nobody <nobody>
Status: NEW --- QA Contact: Lukáš Petrovický <lpetrovi>
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: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Toshiya Kobayashi 2016-04-12 08:58:54 UTC
If 2 users concurrently build different packages in Guvnor GUI. Both building fail and get Exceptions as follows:

=====
17:46:02,312 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)
	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)
	at org.drools.guvnor.server.RepositoryPackageOperations.buildPackage(RepositoryPackageOperations.java:577)
	at org.drools.guvnor.server.RepositoryPackageOperations.buildPackage(RepositoryPackageOperations.java:548)
	at org.drools.guvnor.server.RepositoryPackageService.buildPackage(RepositoryPackageService.java:343)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.security.SecurityInterceptor.aroundInvoke(SecurityInterceptor.java:163)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
	at org.drools.guvnor.server.RepositoryPackageService_$$_javassist_seam_4.buildPackage(RepositoryPackageService_$$_javassist_seam_4.java)
	at org.drools.guvnor.server.RepositoryServiceServlet.buildPackage(RepositoryServiceServlet.java:302)
...


17:47:13,247 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.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.security.SecurityInterceptor.aroundInvoke(SecurityInterceptor.java:163)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
	at org.drools.guvnor.server.RepositoryPackageService_$$_javassist_seam_4.buildPackage(RepositoryPackageService_$$_javassist_seam_4.java)
	at org.drools.guvnor.server.RepositoryServiceServlet.buildPackage(RepositoryServiceServlet.java:302)
....
Caused by: java.lang.VerifyError: (class: com/sample2/Rule_HelloWorld_12_9634995d544640c29bf1d38567e11f2eDefaultConsequenceInvoker, method: equals signature: (Ljava/lang/Object;)Z) Expecting to find integer on stack
	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)
	at org.drools.guvnor.server.RepositoryPackageOperations.buildPackage(RepositoryPackageOperations.java:577)
	at org.drools.guvnor.server.RepositoryPackageOperations.buildPackage(RepositoryPackageOperations.java:548)
	at org.drools.guvnor.server.RepositoryPackageService.buildPackage(RepositoryPackageService.java:343)
	... 57 more

=====

How reproducible:

If the packages are large, easy to reproduce.

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

Actual results:

Both building fail and get Exceptions like:

ArrayIndexOutOfBoundsException and VerifyError

Expected results:

Both build the packages successfully