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

Task query fails with ProcessEnginePersistenceException under heavy load

XMLWordPrintable

      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

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

                Created:
                Updated:
                Resolved: