Skip to content

Commit 024ba64

Browse files
Prevent potential lookup issue with signals in high concurrent cases
1 parent d05f8f1 commit 024ba64

File tree

4 files changed

+6
-14
lines changed

4 files changed

+6
-14
lines changed

modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/parser/handler/SignalEventDefinitionParseHandler.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ public Class<? extends BaseElement> getHandledType() {
3333
@Override
3434
protected void executeParse(BpmnParse bpmnParse, SignalEventDefinition signalDefinition) {
3535

36-
Signal signal = null;
37-
if (bpmnParse.getBpmnModel().containsSignalId(signalDefinition.getSignalRef())) {
38-
signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef());
39-
}
36+
Signal signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef());
4037

4138
if (bpmnParse.getCurrentFlowElement() instanceof IntermediateCatchEvent) {
4239
IntermediateCatchEvent intermediateCatchEvent = (IntermediateCatchEvent) bpmnParse.getCurrentFlowElement();

modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/parser/handler/StartEventParseHandler.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ protected void executeParse(BpmnParse bpmnParse, StartEvent element) {
5555

5656
} else if (eventDefinition instanceof SignalEventDefinition) {
5757
SignalEventDefinition signalDefinition = (SignalEventDefinition) eventDefinition;
58-
Signal signal = null;
59-
if (bpmnParse.getBpmnModel().containsSignalId(signalDefinition.getSignalRef())) {
60-
signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef());
61-
}
58+
Signal signal = bpmnParse.getBpmnModel().getSignal(signalDefinition.getSignalRef());
6259

6360
element.setBehavior(bpmnParse.getActivityBehaviorFactory().createEventSubProcessSignalStartEventActivityBehavior(
6461
element, signalDefinition, signal));

modules/flowable-engine/src/main/java/org/flowable/engine/impl/dynamic/AbstractDynamicStateManager.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1548,9 +1548,8 @@ protected void processCreatedEventSubProcess(EventSubProcess eventSubProcess, Ex
15481548
if (eventDefinition instanceof SignalEventDefinition && (eventSubscriptions == null || eventSubscriptions.isEmpty())) {
15491549
SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition;
15501550
BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(eventSubProcessExecution.getProcessDefinitionId());
1551-
Signal signal = null;
1552-
if (bpmnModel.containsSignalId(signalEventDefinition.getSignalRef())) {
1553-
signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef());
1551+
Signal signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef());
1552+
if (signal != null) {
15541553
signalEventDefinition.setSignalRef(signal.getName());
15551554
}
15561555

modules/flowable-engine/src/main/java/org/flowable/engine/impl/util/ProcessInstanceHelper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,8 @@ protected void handleSignalEventSubscription(EventDefinition eventDefinition, St
452452

453453
SignalEventDefinition signalEventDefinition = (SignalEventDefinition) eventDefinition;
454454
BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(parentExecution.getProcessDefinitionId());
455-
Signal signal = null;
456-
if (bpmnModel.containsSignalId(signalEventDefinition.getSignalRef())) {
457-
signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef());
455+
Signal signal = bpmnModel.getSignal(signalEventDefinition.getSignalRef());
456+
if (signal != null) {
458457
signalEventDefinition.setSignalRef(signal.getName());
459458
}
460459

0 commit comments

Comments
 (0)