Bug 1033235

Summary: Multiple concurrent clients break REST API Singleton Timer scenario due to: ERROR org.hibernate.AssertionFailure: collection [null] was not processed by flush()
Product: [Retired] JBoss BPMS Platform 6 Reporter: Jiri Svitak <jsvitak>
Component: Business CentralAssignee: Marco Rietveld <mrietvel>
Status: CLOSED CURRENTRELEASE QA Contact: Jiri Svitak <jsvitak>
Severity: high Docs Contact:
Priority: medium    
Version: 6.0.0CC: kverlaen, mbaluch, smcgowan
Target Milestone: ---Keywords: TestBlocker
Target Release: 6.0.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-08-06 20:07:57 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:
Attachments:
Description Flags
timer.log none

Description Jiri Svitak 2013-11-21 18:35:26 UTC
Created attachment 827407 [details]
timer.log

Multiple concurrent clients break REST API Singleton Timer scenario due to: ERROR org.hibernate.AssertionFailure: collection [null] was not processed by flush()

Also another error message can be interesting:
[org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorImpl] (http-localhost/127.0.0.1:8080-4) Transaction afterCompletion called by a background thread! Delaying action until the original thread can handle it. [status=4]


To reproduce:
1.) Download BPMS 6 ER4 and merge it with EAP 6.1 distribution.
2.) Add user guest, password guest into EAP config files:
application-users.properties:  guest=b5d048a237bfd2874b6928e1f37ee15e
application-roles.properties:  guest=kie-user,admin
3.) Setup datasource for BPMS, I used PostgreSQL. Make sure the db is empty before the test. Do not use default H2.
4.) Start the server and go to http://localhost:8080/business-central.
5.) Clone repository git://git.app.eng.bos.redhat.com/bpms-assets.git to your BPMS installation.
6.) Build&Deploy a project bpms-perf from the bpms-assets.git repo.
7.) Make sure you can run REST API command POST on address:
http://localhost:8080/kie-wb/rest/runtime/com.bpms.flood:bpms-perf:1.0.0.Final/process/com.bpms.flood.Timer/start
8.) Run the performance framework:
git clone git://git.app.eng.bos.redhat.com/jbossqe-process-flood.git
cd jbossqe-process-flood/bpms-6.x
./execute_scenario.sh -Dscenario=Timer_pcREST -Dduration=10000 -DwarmUp=true -Dthreads=4

All the exceptions can be seen in the attached server log (timer.log). Client kept throwing HTTP error 500.

My env:
BPMS 6 ER4
EAP 6.1
PostgreSQL 9.1.9
postgresql-9.1-902.jdbc4.jar

p.s. 
You can check also 'minor perf report' here to see that other combinations seem to work:
https://bugzilla.redhat.com/show_bug.cgi?id=998199#c9

Comment 1 Jiri Svitak 2013-11-21 18:47:09 UTC
My bad, I forgot about https://bugzilla.redhat.com/show_bug.cgi?id=1002724, which has not arrived for testing yet. So I'll retest this one with ER5.

Comment 2 Jiri Svitak 2013-11-22 18:29:25 UTC
So, I've retested with ER5 and this issue has been fixed. Verified in BPMS 6 ER5.

However there REST API client is still not working:
https://bugzilla.redhat.com/show_bug.cgi?id=1033726

Comment 3 Lukáš Petrovický 2014-02-07 16:15:44 UTC
This BZ has been part of the 6.0.0 stream.