Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-7041

Task query fails with ProcessEnginePersistenceException under heavy load

      This query can fail during parallel execution:

      taskService.createTaskQuery.taskCandidateGroup("foo").list();
      

      The exception is along the lines of:

      Caused by: org.apache.ibatis.exceptions.PersistenceException:
      ### Error querying database.  Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'candidateGroups != null && candidateGroups.size() > 0'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method "size" failed for object [...] [java.lang.IllegalAccessException: Class org.apache.ibatis.ognl.OgnlRuntime can not access a member of class java.util.Collections$SingletonList with modifiers "public"]
      ### Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'candidateGroups != null && candidateGroups.size() > 0'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method "size" failed for object [...] [java.lang.IllegalAccessException: Class org.apache.ibatis.ognl.OgnlRuntime can not access a member of class java.util.Collections$SingletonList with modifiers "public"]
              at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
              at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
              at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
              at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
              at org.camunda.bpm.engine.impl.db.sql.DbSqlSession.selectOne(DbSqlSession.java:107)
      

      Reason: Can't use private classes as Mybatis query parameters with Mybatis 3.2.8, see CAM-4078. We have another instance of this here: https://github.com/camunda/camunda-bpm-platform/blob/7.6.0-alpha5/engine/src/main/java/org/camunda/bpm/engine/impl/TaskQueryImpl.java#L850-L859

      Solution possibilities:

      • update MyBatis dependency (this must be a conscious product management decision; Mybatis is a central library and an update is not without risk)
      • don't use private classes (if going this route, check this for all existing queries we have)

        This is the controller panel for Smart Panels app

            [CAM-7041] Task query fails with ProcessEnginePersistenceException under heavy load

            Askar added a comment -

            Askar added a comment - see commit https://github.com/camunda/camunda-bpm-platform/commit/43fdd80950774c163debb78681aef61d1a7f6bb4 if you want to test this thing.

              thorben.lindhauer Thorben Lindhauer
              thorben.lindhauer Thorben Lindhauer
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: