Uploaded image for project: 'Kogito'
  1. Kogito
  2. KOGITO-7621

Null "triggerTime" field in processinstance events leads to management console crash

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.33.0.Final
    • 1.24.0.Final
    • Core Engine
    • None
    • False
    • None
    • False
    • ---
    • ---

    Description

      Model

      misses "enter" filed in user task events (processinstance events) (some time ago I saw same behavior in some other elements, but was unable to reproduce)

      ### request
      {
        ProcessInstances(
          where: {
            state: {
              equal: ACTIVE}
          }, 
          orderBy: {
            start: DESC}, 
          pagination: {
            limit: 10, 
            offset: 0}) {
          id
          processId
          processName
          start
          end
          state
          nodes {
            id, name, type, exit, enter
          }
          variables
        }
      }
      
      ### response
      
      {
          "id": "1913510b-a4e6-4080-9630-c473d5d0d2ca",
          "source": "http://localhost:8080/test",
          "type": "ProcessInstanceEvent",
          "time": "2022-07-21T11:48:55.232915Z",
          "data": {
              "id": "41f8f589-608e-4dd0-86f6-2653e9f135be",
              "version": "1.0",
              "parentInstanceId": "",
              "rootInstanceId": "",
              "processId": "test",
              "processType": null,
              "rootProcessId": "",
              "processName": "test",
              "startDate": "2022-07-21T11:48:38.695+00:00",
              "endDate": null,
              "state": 1,
              "businessKey": "",
              "nodeInstances": [
                  {
                      "id": "1bbc4c2a-a9d6-461d-ba03-cde40d26d38e",
                      "nodeId": "11",
                      "nodeDefinitionId": "_13036128-58AA-47EC-A807-7304392621ED",
                      "nodeName": "Timer",
                      "nodeType": "TimerNode",
                      "triggerTime": "2022-07-21T11:48:55.200+00:00",
                      "leaveTime": null
                  },
                  {
                      "id": "3cd512c8-58a0-4419-ad1e-2e74168cb7ab",
                      "nodeId": "9",
                      "nodeDefinitionId": "_D0C9599D-34CB-47F6-BD91-FE752088CD17",
                      "nodeName": "Usertask",
                      "nodeType": "HumanTaskNode",
      ################ triggerTime is null #################3
                      "triggerTime": null,
                      "leaveTime": "2022-07-21T11:48:55.200+00:00"
                  }
              ],
              "variables": {
                  "main": "string"
              },
              "error": null,
              "roles": null,
              "milestones": []
          },
          "specversion": "1.0",
          "kogitoprocinstanceid": "41f8f589-608e-4dd0-86f6-2653e9f135be",
          "kogitoprocid": "test",
          "kogitoaddons": "mongodb-persistence,process-management,monitoring,process-svg,prometheus-monitoring,jobs-management",
          "kogitoprocversion": "1.0",
          "kogitousertaskist": "1"
      } 

      Which leads to user task node storing in data-index without "enter" field (extract from mongo, same behavior applies to infi and pg)

          {      "_id": "3cd512c8-58a0-4419-ad1e-2e74168cb7ab",      "definitionId": "_D0C9599D-34CB-47F6-BD91-FE752088CD17",      "exit": 1658404135200,      "name": "Usertask",      "nodeId": "9",      "type": "HumanTaskNode"    }, 

      which leads to graphql schema violation

      {
        "errors": [
          {
            "message": "The field at path '/ProcessInstances[0]/nodes[1]/enter' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value.  The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'DateTime' within parent type 'NodeInstance'",
            "path": [
              "ProcessInstances",
              0,
              "nodes",
              1,
              "enter"
            ],
            "extensions": {
              "classification": "NullValueInNonNullableField"
            }
          }
        ],
        "data": {
          "ProcessInstances": [
            null
          ]
        }
      } 

      which leads to management console unable to show process instance details

      Steps to reproduce

      See https://github.com/StoneToken/workflow-engines-load-test/blob/master/kogito-rnd/src/main/resources/org/acme/kogitobpmn/test.bpmn

      Run project with

      mvn clean package
      docker-compose build
      docker-compose up -d
      

      Start instance

      curl -X 'POST' \
        'http://localhost:8080/test' \
        -H 'accept: */*' \
        -H 'Content-Type: application/json' \
        -d '{
        "main": "string"
      }' 

      Go to management console - localhost:8280 (jdoe|jdoe) to check it's started

      Complete user task in task console - localhost:8380 (jdoe|jdoe)

      Go back to management console to see PI crashed.

       

      Expected behavior: events contain correct triggerTime and process instance displays correctly

      Attachments

        Issue Links

          Activity

            People

              cnicolai@redhat.com Cristiano Nicolai
              yremishevsky Yury Remishevsky
              Marian Macik Marian Macik
              Marian Macik Marian Macik
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: