deepakkapoor23 opened a new issue, #3467:
URL: https://github.com/apache/incubator-kie-kogito-runtimes/issues/3467

   ### Describe the bug
   
   Given a SW with events that define a correlation attribute which is added to 
cloud event as a custom extension.
   
   from workflow definition: two events with same correlationid
   "events": [
       {
         "name": "NewApplicantEvent",
         "source": "",
         "type": "applicants",
         "kind": "consumed",
         "correlation": [
           {
             "contextAttributeName": "correlationid"
           }
         ]
       },
       {
         "name": "ManualConfirmationEvent",
         "source": "",
         "type": "confirmations",
         "kind": "consumed",
         "correlation": [
           {
             "contextAttributeName": "correlationid"
           }
         ]
       }
   ]
   
   cloud events:
   
   CloudEvent{id='32f24a1c-9c60-4edc-bb92-9c7abe76d9ab', 
source=http://localhost:8080, type='applicants', 
data=JsonCloudEventData{node={"name":"Ricardo","position":"Frontend 
Developer","office":"Atlanta","salary":300000}}, 
extensions={correlationid=Ricardo}}
   
   CloudEvent{id='a7f8b789-ef00-489b-b7f5-321b4c437072', 
source=http://localhost:8080, type='confirmations', 
data=JsonCloudEventData{node={"name":"Ricardo","confirmation":"approved"}}, 
extensions={correlationid=Ricardo}}
   
   
   process document stored in mongodb:
   {
     "_id": {
       "$oid": "6615670752062b46bf0d39fa"
     },
     "processType": "SW",
     "processId": "applicantworkflow",
     "id": "15b59c77-00cd-4dc7-8ab2-fa3d61ddf4e5",
     "description": "Applicant Workflow",
     "state": 1,
     "startDate": "1712678663485",
     "signalCompletion": true,
     "sla": {
       "slaCompliance": 0
     },
     "context": {
       "variable": [
         {
           "name": "workflowdata",
           "dataType": "com.fasterxml.jackson.databind.node.ObjectNode",
           "value": {
             "@type": 
"type.googleapis.com/org.kie.kogito.serialization.process.protobuf.JsonNode",
             "content": "{\r\n  \"name\" : \"Ricardo\",\r\n  \"position\" : 
\"Frontend Developer\",\r\n  \"office\" : \"Atlanta\",\r\n  \"salary\" : 
300000,\r\n  \"decision\" : \"Approved\"\r\n}"
           }
         }
       ],
       "nodeInstance": [
         {
           "id": "65b7aeb8-bff4-4734-868e-9cde5e242c11",
           "nodeId": "11",
           "content": {
             "@type": 
"type.googleapis.com/org.kie.kogito.serialization.process.protobuf.EventNodeInstanceContent"
           },
           "level": 1,
           "triggerDate": "1712678663524",
           "sla": {
             "slaCompliance": 0
           }
         }
       ],
       "iterationLevels": [
         {
           "id": "7",
           "level": 1
         },
         {
           "id": "_jbpm-unique-9",
           "level": 1
         }
       ]
     },
     "completedNodeIds": [
       "_jbpm-unique-1",
       "_jbpm-unique-2",
       "_jbpm-unique-4",
       "_jbpm-unique-3",
       "_jbpm-unique-7",
       "_jbpm-unique-14"
     ]
   }
   
   
   ### Expected behavior
   
   Kogito runtime should be able to lookup the existing process using the 
correlation id on cloud event regardless of whether the runtime is restarted or 
not.
   
   ### Actual behavior
   
   Kogito runtime is unable to lookup the existing process instance based on 
correlation id in the cloud event after the runtime is restarted.
   
   The following message is seen in the logs and the event is skipped.
   
   2024-04-09 12:24:17,643 INFO  [org.kie.kog.eve.imp.ProcessEventDispatcher] 
(vert.x-eventloop-thread-0) No matches found for trigger confirmations in 
process applicantworkflow. Skipping consumed message CloudEventWrapDataEvent 
[cloudEvent=CloudEvent{id='a7f8b789-ef00-489b-b7f5-321b4c437072', 
source=http://localhost:8080, type='confirmations', 
data=JsonCloudEventData{node={"name":"Ricardo","confirmation":"approved"}}, 
extensions={correlationid=Ricardo}}]
   
   ### How to Reproduce?
   
   Steps to reproduce:
   
   1. Start the kogito runtime
   2. Send applicant event with some name e.g. "Ricardo" (which is used as 
correlation id). This will start a new workflow instance
   3. Validate db for an active instance record
   4. Send confirmation event with the same name "Ricardo"
   5. Notice that workflow resumes and finishes and the record is db is removed
   
   Now repeat the same steps except with a restart in between.
   1. Start the kogito runtime
   2. Send applicant event with some name e.g. "Ricardo" (which is used as 
correlation id). This will start a new workflow instance
   3. Validate db for an active instance record
   4. Restart kogito runtime
   5. Send confirmation event with the same name "Ricardo"
   6. Notice that workflow does not resume after the restart and the record is 
db is still present
   
   
   ### Output of `uname -a` or `ver`
   
   _No response_
   
   ### Output of `java -version`
   
   java version "17.0.5" 2022-10-18 LTS Java(TM) SE Runtime Environment (build 
17.0.5+9-LTS-191) Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9-LTS-191, 
mixed mode, sharing)
   
   ### GraalVM version (if different from Java)
   
   _No response_
   
   ### Kogito version or git rev (or at least Quarkus version if you are using 
Kogito via Quarkus platform BOM)
   
   1.43.0.Final
   
   ### Build tool (ie. output of `mvnw --version` or `gradlew --version`)
   
   Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9) Maven home: 
C:\Users\dkapoor\.m2\wrapper\dists\apache-maven-3.9.4-bin\32a55694\apache-maven-3.9.4
 Java version: 17.0.5, vendor: Oracle Corporation, runtime: 
C:\Build\depot\3rd_Party\jsdk\17.0.5\Windows Default locale: en_US, platform 
encoding: Cp1252 OS name: "windows 11", version: "10.0", arch: "amd64", family: 
"windows"
   
   ### Additional information
   
   Kogito runtime seems to be using some information from memory to lookup 
existing process instance which is lost after a restart.
   
   Also notice that there is no correlation information in the record saved in 
mongo db which is strange because it needs correlation id to lookup the record 
later. I wonder how is it able to look it up without a restart even when there 
is no correlarion id saved in db explicitly.
   
   When using postgres db, I am able to see correlation id saved in a separate 
table explicitly.
   However, it still has the same issue regardless of what db is used - 
infinispan, mongodb or postgres.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to