Details
-
Bug
-
Resolution: Done
-
Major
-
7.7.0.GA
-
RHPAM 7.7.0
Description
We have faced up with a weird thing running a simple process "start->script->end" comparing results in Log tables with JPA vs JMS audit mode enabled. It seems that the connection IDs are different.
- The data with JMS mode:
SELECT * FROM PROCESSINSTANCELOG; ID CORRELATIONKEY DURATION END_DATE EXTERNALID USER_IDENTITY OUTCOME PARENTPROCESSINSTANCEID PROCESSID PROCESSINSTANCEDESCRIPTION PROCESSINSTANCEID PROCESSNAME PROCESSTYPE PROCESSVERSION SLACOMPLIANCE SLA_DUE_DATE START_DATE STATUS 1 1 0 2020-03-31 11:43:15.191 kie-server-jms_1.0.0-SNAPSHOT anton null -1 kie-server-jms.JMSTest JMSTest 1 JMSTest 1 1.0 0 null 2020-03-31 11:43:15.076 2
SELECT * FROM VARIABLEINSTANCELOG; ID LOG_DATE EXTERNALID OLDVALUE PROCESSID PROCESSINSTANCEID VALUE VARIABLEID VARIABLEINSTANCEID 1 2020-03-31 11:43:15.157 kie-server-jms_1.0.0-SNAPSHOT kie-server-jms.JMSTest 1 anton initiator initiator
//Let's focus on nodeinstancelog only:
SELECT * FROM NODEINSTANCELOG order by nodeinstanceid asc, type asc; ID CONNECTION LOG_DATE EXTERNALID NODECONTAINERID NODEID NODEINSTANCEID NODENAME NODETYPE PROCESSID PROCESSINSTANCEID REFERENCEID SLACOMPLIANCE SLA_DUE_DATE TYPE WORKITEMID 1 null 2020-03-31 11:43:15.175 kie-server-jms_1.0.0-SNAPSHOT null _DF725249-E03F-4231-A574-CF95C7DCEC1C 0 null StartNode kie-server-jms.JMSTest 1 null 0 null 0 null 2 _4030EF43-FBE5-42B1-8AD3-352779AF10B7 2020-03-31 11:43:15.178 kie-server-jms_1.0.0-SNAPSHOT null _9CF32F53-7053-43A9-88C3-D37FDBA45765 1 sample script ActionNode kie-server-jms.JMSTest 1 null 0 null 0 null 3 _3EA9B21D-CFF0-47E0-AA6A-29015BECDFC0 2020-03-31 11:43:15.181 kie-server-jms_1.0.0-SNAPSHOT null _C03BD0AF-20C4-4ECC-8AD3-6BA268D7A843 2 null EndNode kie-server-jms.JMSTest 1 null 0 null 0 null 4 null 2020-03-31 11:43:15.21 kie-server-jms_1.0.0-SNAPSHOT null _C03BD0AF-20C4-4ECC-8AD3-6BA268D7A843 2 null EndNode kie-server-jms.JMSTest 1 null 0 null 1 null 5 _3EA9B21D-CFF0-47E0-AA6A-29015BECDFC0 2020-03-31 11:43:15.211 kie-server-jms_1.0.0-SNAPSHOT null _9CF32F53-7053-43A9-88C3-D37FDBA45765 1 sample script ActionNode kie-server-jms.JMSTest 1 null 0 null 1 null 6 _4030EF43-FBE5-42B1-8AD3-352779AF10B7 2020-03-31 11:43:15.213 kie-server-jms_1.0.0-SNAPSHOT null _DF725249-E03F-4231-A574-CF95C7DCEC1C 0 null StartNode kie-server-jms.JMSTest 1 null 0 null 1 null
- The data with JPA mode:
SELECT * FROM NODEINSTANCELOG order by nodeinstanceid asc, type asc; ID CONNECTION LOG_DATE EXTERNALID NODECONTAINERID NODEID NODEINSTANCEID NODENAME NODETYPE PROCESSID PROCESSINSTANCEID REFERENCEID SLACOMPLIANCE SLA_DUE_DATE TYPE WORKITEMID 1 null 2020-03-31 11:56:50.203 kie-server-jms_1.0.0-SNAPSHOT null _DF725249-E03F-4231-A574-CF95C7DCEC1C 0 null StartNode kie-server-jms.JMSTest 1 null 0 null 0 null 2 null 2020-03-31 11:56:50.205 kie-server-jms_1.0.0-SNAPSHOT null _DF725249-E03F-4231-A574-CF95C7DCEC1C 0 null StartNode kie-server-jms.JMSTest 1 null 0 null 1 null 3 _4030EF43-FBE5-42B1-8AD3-352779AF10B7 2020-03-31 11:56:50.206 kie-server-jms_1.0.0-SNAPSHOT null _9CF32F53-7053-43A9-88C3-D37FDBA45765 1 sample script ActionNode kie-server-jms.JMSTest 1 null 0 null 0 null 4 null 2020-03-31 11:56:50.21 kie-server-jms_1.0.0-SNAPSHOT null _9CF32F53-7053-43A9-88C3-D37FDBA45765 1 sample script ActionNode kie-server-jms.JMSTest 1 null 0 null 1 null 5 _3EA9B21D-CFF0-47E0-AA6A-29015BECDFC0 2020-03-31 11:56:50.211 kie-server-jms_1.0.0-SNAPSHOT null _C03BD0AF-20C4-4ECC-8AD3-6BA268D7A843 2 null EndNode kie-server-jms.JMSTest 1 null 0 null 0 null 6 null 2020-03-31 11:56:50.212 kie-server-jms_1.0.0-SNAPSHOT null _C03BD0AF-20C4-4ECC-8AD3-6BA268D7A843 2 null EndNode kie-server-jms.JMSTest 1 null 0 null 1 null
Why the connection IDs are different?
Here are the classes for you to look at, and you will understand it has to be different:
JMS
https://github.com/kiegroup/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/jms/AsyncAuditLogProducer.java https://github.com/kiegroup/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/jms/AsyncAuditLogReceiver.java
JPA:
https://github.com/kiegroup/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/JPAWorkingMemoryDbLogger.java
to be even more specific:
in JPA, this DOES NOT GET persisted:
https://github.com/kiegroup/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/JPAWorkingMemoryDbLogger.java#L167
in JMS, this DOES GET persisted:
https://github.com/kiegroup/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/jms/AsyncAuditLogProducer.java#L155 https://github.com/kiegroup/jbpm/blob/master/jbpm-audit/src/main/java/org/jbpm/process/audit/jms/AsyncAuditLogReceiver.java#L86
So in short the difference is that the NodeInstanceLog.connection info is captured in the node-enter event only (JPA) vs. on both node-enter and node-left (JMS). We think that the two modes should work in the same way. We don't know why it's not storing the connection ID for node left events with JPA.