camunda / camunda

Process Orchestration Framework
https://camunda.com/platform/
3.35k stars 612 forks source link

NPE at ExpressionProcessor.evaluateMessageCorrelationKeyExpression #23423

Open rodrigo-lourenco-lopes opened 1 month ago

rodrigo-lourenco-lopes commented 1 month ago

Describe the bug

Reported by the here in error reporting tool. We find a NPE exception for a missing correlation key when evaluating the message correlation key in expression processor.

Was not able to check the model that lead to this error, since when I went to check it the cluster was already down.

Logs.

Expected to process record 'TypedRecordImpl{metadata=RecordMetadata{recordType=COMMAND, valueType=JOB, intent=COMPLETE, authorization=JWT.eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJ6ZWViZS1nYXRld2F5IiwiYXVkIjoiemVlYmUtYnJva2VyIiwic3ViIjoiemVlYmUtY2xpZW50IiwiYXV0aG9yaXplZF90ZW5hbnRzIjpbIjxkZWZhdWx0PiJdfQ.}, value={"deadline":-1,"timeout":-1,"worker":"","retries":-1,"retryBackoff":0,"recurringTime":-1,"type":"","customHeaders":[packed value (length=1)],"variables":"hKdzdWJqZWN02StDaGFuZ2VzIHRvIE9mZmljZSBIb3VycyBTdGFydGluZyBOZXh0IE1vbnRopGZyb222Sm9obiBTbWl0aCwgSFIgTWFuYWdlcqJ0b61BbGwgRW1wbG95ZWVzpHRleHTaAnlEZWFyIEFsbCwKCkkgd2FudCB0byBpbmZvcm0geW91IGFib3V0IGNoYW5nZXMgdG8gb3VyIG9mZmljZSBob3Vycywgd2hpY2ggd2lsbCB0YWtlIGVmZmVjdCBzdGFydGluZyBOb3ZlbWJlciAxc3QsIDIwMjQuIEJhc2VkIG9uIHJlY2VudCBmZWVkYmFjayBhbmQgb3BlcmF0aW9uYWwgbmVlZHMsIHRoZSBuZXcgb2ZmaWNlIGhvdXJzIHdpbGwgYmUgZnJvbSA5OjAwIEFNIHRvIDY6MDAgUE0sIE1vbmRheSB0aHJvdWdoIEZyaWRheS4KClRoaXMgY2hhbmdlIGlzIGludGVuZGVkIHRvIGFsaWduIHdpdGggdGhlIGF2YWlsYWJpbGl0eSBvZiBvdXIgY2xpZW50cyBhbmQgb3B0aW1pemUgb3VyIHRlYW0ncyBwcm9kdWN0aXZpdHkuIFdlIHVuZGVyc3RhbmQgdGhpcyBtYXkgcmVxdWlyZSBhZGp1c3RtZW50cyB0byBwZXJzb25hbCBzY2hlZHVsZXMsIGFuZCB3ZSBhcmUgYXZhaWxhYmxlIHRvIGFkZHJlc3MgYW55IGNvbmNlcm5zIG9yIHF1ZXN0aW9ucyB5b3UgbWF5IGhhdmUgcmVnYXJkaW5nIHRoaXMgdHJhbnNpdGlvbi4KClBsZWFzZSBmZWVsIGZyZWUgdG8gcmVhY2ggb3...}' without errors, but exception occurred with message 'expression'.
java.lang.NullPointerException: expression
    at java.base/java.util.Objects.requireNonNull(Unknown Source) ~[?:?]
    at io.camunda.zeebe.util.EnsureUtil.ensureNotNull(EnsureUtil.java:20) ~[zeebe-util-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.el.impl.FeelExpressionLanguage.evaluateExpression(FeelExpressionLanguage.java:72) ~[zeebe-expression-language-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.ExpressionProcessor.evaluateExpression(ExpressionProcessor.java:415) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.ExpressionProcessor.evaluateExpressionAsEither(ExpressionProcessor.java:420) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.ExpressionProcessor.evaluateMessageCorrelationKeyExpression(ExpressionProcessor.java:300) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.CatchEventBehavior.evaluateCorrelationKey(CatchEventBehavior.java:245) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.util.Either$Right.flatMap(Either.java:417) ~[zeebe-util-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.CatchEventBehavior.evalExpressions(CatchEventBehavior.java:207) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.CatchEventBehavior.lambda$subscribeToEvents$6(CatchEventBehavior.java:185) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) ~[?:?]
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:?]
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:?]
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[?:?]
    at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:?]
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:?]
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source) ~[?:?]
    at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:?]
    at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source) ~[?:?]
    at io.camunda.zeebe.engine.processing.common.CatchEventBehavior.subscribeToEvents(CatchEventBehavior.java:189) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.common.CatchEventBehavior.subscribeToEvents(CatchEventBehavior.java:154) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.behavior.BpmnEventSubscriptionBehavior.subscribeToEvents(BpmnEventSubscriptionBehavior.java:48) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.event.StartEventProcessor.finalizeCompletion(StartEventProcessor.java:75) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.event.StartEventProcessor.finalizeCompletion(StartEventProcessor.java:25) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.processElementWithListeners(BpmnStreamProcessor.java:236) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.afterCompleting(BpmnStreamProcessor.java:215) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.lambda$processEvent$5(BpmnStreamProcessor.java:169) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.util.Either$Right.flatMap(Either.java:417) ~[zeebe-util-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.processEvent(BpmnStreamProcessor.java:169) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.lambda$processRecord$0(BpmnStreamProcessor.java:110) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.util.Either$Right.ifRightOrLeft(Either.java:438) ~[zeebe-util-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.processRecord(BpmnStreamProcessor.java:107) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.engine.Engine.process(Engine.java:131) ~[zeebe-workflow-engine-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.stream.impl.ProcessingStateMachine.batchProcessing(ProcessingStateMachine.java:375) ~[zeebe-stream-platform-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.stream.impl.ProcessingStateMachine.lambda$processCommand$3(ProcessingStateMachine.java:285) ~[zeebe-stream-platform-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.db.impl.rocksdb.transaction.ZeebeTransaction.run(ZeebeTransaction.java:109) ~[zeebe-db-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.stream.impl.ProcessingStateMachine.processCommand(ProcessingStateMachine.java:285) ~[zeebe-stream-platform-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.stream.impl.ProcessingStateMachine.tryToReadNextRecord(ProcessingStateMachine.java:244) ~[zeebe-stream-platform-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.scheduler.ActorJob.invoke(ActorJob.java:83) [zeebe-scheduler-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.scheduler.ActorJob.execute(ActorJob.java:42) [zeebe-scheduler-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.scheduler.ActorTask.execute(ActorTask.java:122) [zeebe-scheduler-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.scheduler.ActorThread.executeCurrentTask(ActorThread.java:130) [zeebe-scheduler-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.scheduler.ActorThread.doWork(ActorThread.java:108) [zeebe-scheduler-8.6.0-alpha5.jar:8.6.0-alpha5]
    at io.camunda.zeebe.scheduler.ActorThread.run(ActorThread.java:227) [zeebe-scheduler-8.6.0-alpha5.jar:8.6.0-alpha5]

To Reproduce

Not sure.

Expected behavior

Log/Stacktrace

Full Stacktrace

``` ```

Environment:

megglos commented 1 week ago

Shouldn't have passed validation, will result in banned instance, however this already fails fast right after start event. Any tested process wouldn't be affected.