camunda / camunda

Distributed Workflow Engine for Microservices Orchestration
https://camunda.com/platform/
3.09k stars 562 forks source link

NPE while transforming Compensation End Event #18926

Open berkaycanbc opened 2 weeks ago

berkaycanbc commented 2 weeks ago

Describe the bug

id of a compensation end event is set to null leading to a NPE during BPMN transformation.

To Reproduce

Tested locally if it is possible to deploy a compensation end event without an end event element id and get a validation error back as expected.

But when the compensateEventDefinition id removed from the BPMN xml (see id="CompensateEventDefinition_11dncci" below), the error is produced.

<bpmn:endEvent id="Event_0edwxdz" name="end">
      <bpmn:incoming>Flow_0qcpsp5</bpmn:incoming>
      <bpmn:compensateEventDefinition id="CompensateEventDefinition_11dncci" />
    </bpmn:endEvent>

Expected behavior

Compensation end event should have id set during transformation.

Log/Stacktrace

Full Stacktrace

``` java.lang.NullPointerException: Cannot invoke "String.getBytes(java.nio.charset.Charset)" because "value" is null at io.camunda.zeebe.util.StringUtil.getBytes(StringUtil.java:39) ~[zeebe-util-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.util.StringUtil.getBytes(StringUtil.java:35) ~[zeebe-util-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.util.buffer.BufferUtil.wrapString(BufferUtil.java:42) ~[zeebe-util-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.element.AbstractFlowElement.(AbstractFlowElement.java:23) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.element.ExecutableCompensation.(ExecutableCompensation.java:19) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.transformer.EndEventTransformer.transformCompensationEventDefinition(EndEventTransformer.java:123) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.transformer.EndEventTransformer.transformEventDefinition(EndEventTransformer.java:77) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.transformer.EndEventTransformer.transform(EndEventTransformer.java:44) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.transformer.EndEventTransformer.transform(EndEventTransformer.java:26) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.transformation.TransformationVisitor.visit(TransformationVisitor.java:42) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.model.bpmn.traversal.TypeHierarchyVisitor.visit(TypeHierarchyVisitor.java:39) ~[zeebe-bpmn-model-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.model.bpmn.traversal.ModelWalker.walk(ModelWalker.java:73) ~[zeebe-bpmn-model-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.model.transformation.BpmnTransformer.transformDefinitions(BpmnTransformer.java:118) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.transform.BpmnResourceTransformer.lambda$transformResource$3(BpmnResourceTransformer.java:77) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.util.Either$Right.flatMap(Either.java:417) ~[zeebe-util-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.transform.BpmnResourceTransformer.transformResource(BpmnResourceTransformer.java:70) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.transform.DeploymentTransformer.transformResource(DeploymentTransformer.java:130) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.transform.DeploymentTransformer.transform(DeploymentTransformer.java:106) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.DeploymentCreateProcessor.transformAndDistributeDeployment(DeploymentCreateProcessor.java:151) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.deployment.DeploymentCreateProcessor.processNewCommand(DeploymentCreateProcessor.java:105) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.processing.streamprocessor.DistributedTypedRecordProcessor.processRecord(DistributedTypedRecordProcessor.java:33) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.engine.Engine.process(Engine.java:127) ~[zeebe-workflow-engine-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.batchProcessing(ProcessingStateMachine.java:370) ~[zeebe-stream-platform-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.lambda$processCommand$3(ProcessingStateMachine.java:283) ~[zeebe-stream-platform-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.db.impl.rocksdb.transaction.ZeebeTransaction.run(ZeebeTransaction.java:116) ~[zeebe-db-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.processCommand(ProcessingStateMachine.java:283) ~[zeebe-stream-platform-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.tryToReadNextRecord(ProcessingStateMachine.java:241) ~[zeebe-stream-platform-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.scheduler.ActorJob.invoke(ActorJob.java:94) [zeebe-scheduler-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.scheduler.ActorJob.execute(ActorJob.java:47) [zeebe-scheduler-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.scheduler.ActorTask.execute(ActorTask.java:122) [zeebe-scheduler-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.scheduler.ActorThread.executeCurrentTask(ActorThread.java:130) [zeebe-scheduler-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.scheduler.ActorThread.doWork(ActorThread.java:108) [zeebe-scheduler-8.6.0-alpha1.jar:8.6.0-alpha1] at io.camunda.zeebe.scheduler.ActorThread.run(ActorThread.java:227) [zeebe-scheduler-8.6.0-alpha1.jar:8.6.0-alpha1] ```

Environment:

Related issue: https://github.com/camunda/camunda/issues/14929

korthout commented 2 weeks ago

Triage: