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

NullPointerException on process modification on concurrent execution

    XMLWordPrintable

Details

    • Bug Report
    • Resolution: Fixed
    • L3 - Default
    • 7.15.0-alpha1, 7.15.0
    • None
    • None
    • None

    Description

      Created on behalf of PR:
      initial - https://github.com/camunda/camunda-bpm-platform/pull/732
      current - https://github.com/camunda/camunda-bpm-platform/pull/997

      Scenario:

      Expected:
      The subprocess and the parent process complete successfully

      Observed:
      NPE is thrown

      java.lang.NullPointerException: null
      	at org.camunda.bpm.engine.impl.util.ModificationUtil.handleChildRemovalInScope(ModificationUtil.java:54) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.cmd.ModifyProcessInstanceCmd.deletePropagate(ModifyProcessInstanceCmd.java:158) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.cmd.ModifyProcessInstanceCmd.execute(ModifyProcessInstanceCmd.java:90) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.cmd.ModifyProcessInstanceCmd.execute(ModifyProcessInstanceCmd.java:1) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:28) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:110) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:70) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.ProcessInstanceModificationBuilderImpl.execute(ProcessInstanceModificationBuilderImpl.java:265) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.ProcessInstanceModificationBuilderImpl.execute(ProcessInstanceModificationBuilderImpl.java:256) ~[classes/:na]
      	at org.camunda.bpm.engine.impl.ProcessInstanceModificationBuilderImpl.execute(ProcessInstanceModificationBuilderImpl.java:251) ~[classes/:na]
      	at org.camunda.bpm.engine.test.bpmn.callactivity.CallActivityTest.testCallSimpleSubProcessWithModificationEscalationEnd(CallActivityTest.java:1834) ~[test-classes/:na]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
      	at junit.framework.TestCase.runTest(TestCase.java:176) [junit-4.12.jar:4.12]
      	at junit.framework.TestCase.runBare(TestCase.java:141) [junit-4.12.jar:4.12]
      	at org.camunda.bpm.engine.impl.test.AbstractProcessEngineTestCase.runBare(AbstractProcessEngineTestCase.java:115) ~[classes/:na]
      	at junit.framework.TestResult$1.protect(TestResult.java:122) [junit-4.12.jar:4.12]
      	at junit.framework.TestResult.runProtected(TestResult.java:142) [junit-4.12.jar:4.12]
      	at junit.framework.TestResult.run(TestResult.java:125) [junit-4.12.jar:4.12]
      	at junit.framework.TestCase.run(TestCase.java:129) [junit-4.12.jar:4.12]
      	at junit.framework.TestSuite.runTest(TestSuite.java:252) [junit-4.12.jar:4.12]
      	at junit.framework.TestSuite.run(TestSuite.java:247) [junit-4.12.jar:4.12]
      	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) [junit-4.12.jar:4.12]
      	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) [.cp/:na]
      	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) [.cp/:na]
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) [.cp/:na]
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) [.cp/:na]
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) [.cp/:na]
      	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210) [.cp/:na]
      

      Hints:
      The Exception is thrown as the instance is already finished due to the immediate propagation of the escalation event. However, the modification implementation doesn't consider the case at the moment and still tries to propagate deletion to the parent.
      We should consider skipping the further handle in such case.

      mgm-controller-panel

        This is the controller panel for Smart Panels app

        Attachments

          Activity

            People

              Unassigned Unassigned
              yana.vasileva Yana Vasileva
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Salesforce