Uploaded image for project: 'Red Hat Process Automation Manager'
  1. Red Hat Process Automation Manager
  2. RHPAM-2861

JPA vs JMS audit produces different logs

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 7.8.0.GA
    • 7.7.0.GA
    • jBPM Core
    • RHPAM 7.7.0

    • CR1
    • +
    • Hide

      0) kie-server on EAP
      1) enable JMS audit like this -> http://mswiderski.blogspot.com/2018/11/audit-log-mode-applied-to-all-audit-data.html
      2) start process (start->script->end)
      3) check nodeinstancelog
      4) rollback all jms related config, restart server, enable back JPA audit mode
      5) start process (start->script->end)
      6) observe nodeinstalog differences

      Show
      0) kie-server on EAP 1) enable JMS audit like this -> http://mswiderski.blogspot.com/2018/11/audit-log-mode-applied-to-all-audit-data.html 2) start process (start->script->end) 3) check nodeinstancelog 4) rollback all jms related config, restart server, enable back JPA audit mode 5) start process (start->script->end) 6) observe nodeinstalog differences
    • 2020 Week 16-18 (from Apr 13)

    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.

      Attachments

        1. jms-nodelog.png
          jms-nodelog.png
          98 kB
        2. jpa-nodelog.png
          jpa-nodelog.png
          94 kB
        3. myprocess.bpmn
          7 kB

        Activity

          People

            elguardian@gmail.com Enrique González Martínez (Inactive)
            rhn-support-omolinab Oscar Molina
            Gonzalo Muñoz Fernández Gonzalo Muñoz Fernández
            Gonzalo Muñoz Fernández Gonzalo Muñoz Fernández
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: