camunda / camunda

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

java.lang.IllegalArgumentException: type must not be empty #18139

Open korthout opened 1 month ago

korthout commented 1 month ago

Describe the bug

An error was reported: java.lang.IllegalArgumentException: type must not be empty

The stacktrace shows that this concerns the creation of a job without a type:

While it should not be allowed, this shouldn't lead to an error. If this occurs during the execution of a process instance, it can lead to a banned process instance. For example, a trigging timer activates the task without a job type.

To Reproduce

Expected behavior

The problem can occur on any job worker task (service task, user task, etc). An incident should be created at the task during activation if the type expression evaluates to a blank string.

Log/Stacktrace

Full Stacktrace

``` java.lang.IllegalArgumentException: type must not be empty at io.camunda.zeebe.util.EnsureUtil.ensureNotNullOrEmpty(EnsureUtil.java:75) ~[zeebe-util-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.state.instance.DbJobState.makeJobActivatable(DbJobState.java:504) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.state.instance.DbJobState.createJob(DbJobState.java:316) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.state.instance.DbJobState.create(DbJobState.java:116) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.state.appliers.JobCreatedApplier.applyState(JobCreatedApplier.java:30) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.state.appliers.JobCreatedApplier.applyState(JobCreatedApplier.java:18) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.state.appliers.EventAppliers.applyState(EventAppliers.java:440) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.streamprocessor.writers.ResultBuilderBackedEventApplyingStateWriter.appendFollowUpEvent(ResultBuilderBackedEventApplyingStateWriter.java:56) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.streamprocessor.writers.ResultBuilderBackedEventApplyingStateWriter.appendFollowUpEvent(ResultBuilderBackedEventApplyingStateWriter.java:42) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.behavior.BpmnJobBehavior.writeJobCreatedEvent(BpmnJobBehavior.java:185) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.behavior.BpmnJobBehavior.createNewJob(BpmnJobBehavior.java:135) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.task.JobWorkerTaskProcessor.lambda$finalizeActivation$2(JobWorkerTaskProcessor.java:68) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.util.Either$Right.thenDo(Either.java:422) ~[zeebe-util-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.task.JobWorkerTaskProcessor.finalizeActivation(JobWorkerTaskProcessor.java:66) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.task.JobWorkerTaskProcessor.finalizeActivation(JobWorkerTaskProcessor.java:28) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.processElementWithListeners(BpmnStreamProcessor.java:236) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.afterActivating(BpmnStreamProcessor.java:204) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.lambda$processEvent$3(BpmnStreamProcessor.java:162) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.util.Either$Right.flatMap(Either.java:417) ~[zeebe-util-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.processEvent(BpmnStreamProcessor.java:162) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.lambda$processRecord$0(BpmnStreamProcessor.java:110) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.util.Either$Right.ifRightOrLeft(Either.java:438) ~[zeebe-util-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.processing.bpmn.BpmnStreamProcessor.processRecord(BpmnStreamProcessor.java:107) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.engine.Engine.process(Engine.java:127) ~[zeebe-workflow-engine-8.5.0.jar:8.5.0] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.batchProcessing(ProcessingStateMachine.java:369) ~[zeebe-stream-platform-8.5.0.jar:8.5.0] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.lambda$processCommand$3(ProcessingStateMachine.java:282) ~[zeebe-stream-platform-8.5.0.jar:8.5.0] at io.camunda.zeebe.db.impl.rocksdb.transaction.ZeebeTransaction.run(ZeebeTransaction.java:116) ~[zeebe-db-8.5.0.jar:8.5.0] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.processCommand(ProcessingStateMachine.java:282) ~[zeebe-stream-platform-8.5.0.jar:8.5.0] at io.camunda.zeebe.stream.impl.ProcessingStateMachine.tryToReadNextRecord(ProcessingStateMachine.java:240) ~[zeebe-stream-platform-8.5.0.jar:8.5.0] at io.camunda.zeebe.scheduler.ActorJob.invoke(ActorJob.java:94) [zeebe-scheduler-8.5.0.jar:8.5.0] at io.camunda.zeebe.scheduler.ActorJob.execute(ActorJob.java:47) [zeebe-scheduler-8.5.0.jar:8.5.0] at io.camunda.zeebe.scheduler.ActorTask.execute(ActorTask.java:122) [zeebe-scheduler-8.5.0.jar:8.5.0] at io.camunda.zeebe.scheduler.ActorThread.executeCurrentTask(ActorThread.java:130) [zeebe-scheduler-8.5.0.jar:8.5.0] at io.camunda.zeebe.scheduler.ActorThread.doWork(ActorThread.java:108) [zeebe-scheduler-8.5.0.jar:8.5.0] at io.camunda.zeebe.scheduler.ActorThread.run(ActorThread.java:227) [zeebe-scheduler-8.5.0.jar:8.5.0] ```

korthout commented 1 month ago

I've labeled this: