Direct links to fixes
APAR status
Closed as program error.
Error description
In rare situations, for example after you migrate your system, you might see org.springframework.dao.DataIntegrityViolationException and exceptions that are similar to the following exception stack in the SystemOut.log file: org.springframework.dao.DataIntegrityViolationException: StatementCallback; SQL [ insert into LSW_USR_GRP_MEM_XREF(USER_ID, GROUP_ID) SELECT LSW_USR_XREF.USER_ID, 5417 from LSW_USR_XREF where ( USER_ID IN ( select DISTINCT LSW_USR_XREF.USER_ID from LSW_USR_GRP_MEM_XREF, LSW_USR_GRP_XREF, LSW_USR_XREF where LSW_USR_GRP_MEM_XREF.GROUP_ID = LSW_USR_GRP_XREF.GROUP_ID AND LSW_USR_XREF.USER_ID = LSW_USR_GRP_MEM_XREF.USER_ID AND LSW_USR_GRP_XREF.GROUP_NAME = 'wab_lic_produktieteam' ) OR USER_ID IN ( select DISTINCT LSW_USR_XREF.USER_ID from LSW_USR_GRP_MEM_XREF, LSW_USR_GRP_XREF, LSW_USR_XREF where LSW_USR_GRP_MEM_XREF.GROUP_ID = LSW_USR_GRP_XREF.GROUP_ID AND LSW_USR_XREF.USER_ID = LSW_USR_GRP_MEM_XREF.USER_ID AND LSW_USR_GRP_XREF.GROUP_NAME = 'wab_lic_produktieteam_S_f86a73f7-b540-47ca-af3c-36c969e51395.42 28ad52-4 a8b-431a-a85b-8990cffa00d5' ) ) AND USER_ID IN ( select DISTINCT LSW_USR_XREF.USER_ID from LSW_USR_ATTR, LSW_USR_XREF where LSW_USR_XREF.USER_ID = LSW_USR_ATTR.USER_ID AND USER_ATTR_DEF_ID = 'e673bd96-ab12-4c45-b3fa-655a8d499be5' and ATTR_VALUE = 'true' ) AND USER_ID IN ( select DISTINCT LSW_USR_XREF.USER_ID from LSW_USR_ATTR, LSW_USR_XREF where LSW_USR_XREF.USER_ID = LSW_USR_ATTR.USER_ID AND USER_ATTR_DEF_ID = '2d05f0e4-e0c3-4234-bebd-46e4a4d28986' and ATTR_VALUE = 'true' ) ]; DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2;VIRTUSER.LSW_USR_GRP_MEM_XREF, DRIVER=4.11.69; nested exception is com.ibm.websphere.ce.cm.DuplicateKeyException: DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2;VIRTUSER.LSW_USR_GRP_MEM_XREF, DRIVER=4.11.69 at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTransla tor.tran slate(SQLErrorCodeSQLExceptionTranslator.java:292) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate. java:407 ) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.j ava:522) at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.update(S impleJdb cTemplate.java:237) at com.lombardisoftware.server.core.DynamicGroupHelper.assignUsersR ecursive ly(DynamicGroupHelper.java:215) at com.lombardisoftware.server.core.DynamicGroupHelper.refreshMembe rship(Dy namicGroupHelper.java:117) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.resolveParticipantIfNecessary(BPDActivityWorker.java: 2210) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.resolveParticipantAddress(BPDActivityWorker.java:2169 ) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.resolveParticipantAddress(BPDActivityWorker.java:2156 ) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.resolveSendToCustom(BPDActivityWorker.java:1991) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.resolveTaskSendToList(BPDActivityWorker.java:1891) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.resolveSendTo(BPDActivityWorker.java:1054) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.createTask(BPDActivityWorker.java:703) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.executeImplementation(BPDActivityWorker.java:490) at com.lombardisoftware.bpd.component.flowcomponent.activity.worker .BPDActi vityWorker.doWork(BPDActivityWorker.java:270) at com.lombardisoftware.bpd.runtime.engine.FlowObjectExecutionTreeN ode.doWo rk(FlowObjectExecutionTreeNode.java:371) at com.lombardisoftware.bpd.runtime.engine.BPDEngine.executeTreeNod e(BPDEng ine.java:337) at com.lombardisoftware.bpd.runtime.engine.BPDEngine.resume(BPDEngi ne.java: 180) .... The stalled BPD instances are in state running, but no active Task for these BPD instances exists.
Local fix
Problem summary
When IBM BPM refreshes dynamic group membership, it deletes all records in LSW_USR_GRP_MEM_XREF that belong to this group and inserts the records in LSW_USR_GRP_MEM_XREF that make up this group. This refresh happens whenever an activity in a business process definition (BPD) that uses a dynamic group is activated and the associated task is created. If two threads refresh the same group concurrently, the delete operation usually creates a lock that blocks the second thread until the first thread has committed its transaction. However, if no record for this group exists in LSW_USR_GRP_MEM_XREF, the second thread is not blocked and the delete operation has no effect and both threads attempt to insert the same records into LSW_USR_GRP_MEM_XREF, which causes a DataIntegrityViolationException or DuplicateKeyException.
Problem conclusion
A fix is/will be available that catches and ignores the DataIntegrityViolationException because it does no harm. This exception simply means that the records that the actual thread attempted to insert have already been inserted by another thread. On Fix Central (http://www.ibm.com/support/fixcentral), search for JR51699: 1. Select IBM Business Process Manager with your edition from the product selector, the installed version to the fix pack level, and your platform, and then click Continue. 2. Select APAR or SPR, enter JR51699, and click Continue. When you download fix packages, ensure that you also download the readme file for each fix. Review each readme file for additional installation instructions and information about the fix.
Temporary fix
Not applicable
Comments
APAR Information
APAR number
JR51699
Reported component name
BPM ADVANCED
Reported component ID
5725C9400
Reported release
850
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2014-11-03
Closed date
2015-01-12
Last modified date
2015-01-12
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
BPM STANDARD
Fixed component ID
5725C9500
Applicable component levels
R850 PSY
UP
R855 PSY
UP
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSFTDH","label":"IBM Business Process Manager Standard"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.5","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
16 October 2021