Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-10028

Business Central Query Causes Kie-Server to use 100% CPU

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • 7.64.0.Final
    • KieServer
    • None

    Description

      When clicking on "Manage" within Business Central multiple queries are sent to kie-servers

       

      10.1.1.1 - user1 [24/Feb/2022:11:05:18 +0000] "POST /kie-server/services/rest/server/queries/definitions/jbpmProcessInstances/filtered-data?mapper=RawList&page=0&pageSize=10 HTTP/1.1" 200 7064 9821

      10.1.1.1  - user1 [24/Feb/2022:11:05:20 +0000] "POST /kie-server/services/rest/server/queries/definitions/jbpmProcessInstances/filtered-data?mapper=RawList&page=0&pageSize=-1 HTTP/1.1" 200 767 1785

      10.1.1.1  - user1 [24/Feb/2022:11:05:20 +0000] "POST /kie-server/services/rest/server/queries/definitions/jbpmProcessInstances/filtered-data?mapper=RawList&page=0&pageSize=-1 HTTP/1.1" 200 767 1886

      10.1.1.1  - user1 [24/Feb/2022:11:05:21 +0000] "POST /kie-server/services/rest/server/queries/definitions/jbpmProcessInstances/filtered-data?mapper=RawList&page=0&pageSize=-1 HTTP/1.1" 200 407 1572

       

      The SQL for the "pageSize=10" is:

       

      SELECT processinstanceid

                  ,processid

                  ,start_date

                  ,end_date

                  ,status

                  ,parentprocessinstanceid

                  ,outcome

                  ,duration

                  ,user_identity

                  ,processversion

                  ,processname

                  ,correlationkey

                  ,externalid

                  ,processinstancedescription

                  ,sla_due_date

                  ,slacompliance

                  ,lastmodificationdate

                  ,errorcount

      FROM   (SELECT log.processinstanceid

                                  ,log.processid

                                  ,log.start_date

                                  ,log.end_date

                                  ,log.status

                                  ,log.parentprocessinstanceid

                                  ,log.outcome

                                  ,log.duration

                                  ,log.user_identity

                                  ,log.processversion

                                  ,log.processname

                                  ,log.correlationkey

                                  ,log.externalid

                                  ,log.processinstancedescription

                                  ,log.sla_due_date

                                  ,log.slacompliance

                                  ,coalesce(info.lastmodificationdate, log.end_date) AS lastmodificationdate

                                  ,(SELECT COUNT(errinfo.id)

                                      FROM   executionerrorinfo errinfo

                                      WHERE  errinfo.process_inst_id = log.processinstanceid

                                      AND    errinfo.error_ack = 0) AS errorcount

                      FROM   processinstancelog log

                      LEFT   JOIN processinstanceinfo info

                      ON     info.instanceid = log.processinstanceid) "dbSQL"

      WHERE  status = 1.0

      ORDER  BY start_date DESC

      FETCH  FIRST 10 rows ONLY

       

      However, one of those other request runs:

       

      SELECT parentprocessinstanceid "parentProcessInstanceId"

      FROM   (SELECT log.processinstanceid

                                  ,log.processid

                                  ,log.start_date

                                  ,log.end_date

                                  ,log.status

                                  ,log.parentprocessinstanceid

                                  ,log.outcome

                                  ,log.duration

                                  ,log.user_identity

                                  ,log.processversion

                                  ,log.processname

                                  ,log.correlationkey

                                  ,log.externalid

                                  ,log.processinstancedescription

                                  ,log.sla_due_date

                                  ,log.slacompliance

                                  ,coalesce(info.lastmodificationdate, log.end_date) AS lastmodificationdate

                                  ,(SELECT COUNT(errinfo.id)

                                      FROM   executionerrorinfo errinfo

                                      WHERE  errinfo.process_inst_id = log.processinstanceid

                                      AND    errinfo.error_ack = 0) AS errorcount

                      FROM   processinstancelog log

                      LEFT   JOIN processinstanceinfo info

                      ON     info.instanceid = log.processinstanceid) "dbSQL"

      WHERE  parentprocessinstanceid <> -1

      GROUP  BY parentprocessinstanceid

      ORDER  BY parentprocessinstanceid ASC

       

      This particular environment has 7M+ processes in the database, within 5 minutes the kie-server is consuming all available CPU 

       

      As a workaround we've disabled Business Central

       

      I think the problematic code might be in https://github.com/kiegroup/jbpm-wb/blob/main/jbpm-wb-process-runtime/jbpm-wb-process-runtime-client/src/main/java/org/jbpm/workbench/pr/client/editors/instance/list/ProcessInstanceListPresenter.java or maybe https://github.com/kiegroup/jbpm-wb/blob/main/jbpm-wb-process-runtime/jbpm-wb-process-runtime-client/src/main/java/org/jbpm/workbench/pr/client/editors/instance/list/ProcessInstanceListViewImpl.java 

       

      We've only been able to reproduce this issue in environments with 1M+ processes

       

      I've attached threaddumps taken from affected kie-servers when they've been maxing CPU

      Attachments

        Activity

          People

            kverlaen@redhat.com Kris Verlaenen
            mike.lothian@sky.uk Mike Lothian
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: