This is an automated email from the ASF dual-hosted git repository.

pefernan pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new c5024095a6 [incubator-kie-issues-2036] Workflow Engine: Process 
instance getting stuck in Join node intermittently with subprocess based model 
(#3991)
c5024095a6 is described below

commit c5024095a67f74d122071c8a1d355f736ba7b00d
Author: Enrique <[email protected]>
AuthorDate: Wed Jul 23 10:38:25 2025 +0200

    [incubator-kie-issues-2036] Workflow Engine: Process instance getting stuck 
in Join node intermittently with subprocess based model (#3991)
---
 .../org/kie/kogito/services/signal/DefaultSignalManagerHub.java    | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/api/kogito-services/src/main/java/org/kie/kogito/services/signal/DefaultSignalManagerHub.java
 
b/api/kogito-services/src/main/java/org/kie/kogito/services/signal/DefaultSignalManagerHub.java
index 9e7a9793d1..3f36848e53 100644
--- 
a/api/kogito-services/src/main/java/org/kie/kogito/services/signal/DefaultSignalManagerHub.java
+++ 
b/api/kogito-services/src/main/java/org/kie/kogito/services/signal/DefaultSignalManagerHub.java
@@ -29,6 +29,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.kie.api.runtime.process.EventListener;
 import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
+import org.kie.kogito.process.ProcessInstance;
 import org.kie.kogito.process.SignalFactory;
 import org.kie.kogito.signal.ProcessInstanceResolver;
 import org.kie.kogito.signal.SignalManagerHub;
@@ -54,9 +55,13 @@ public class DefaultSignalManagerHub implements 
SignalManagerHub {
         // we signal memory first
         List<String> idList = new ArrayList<>();
         listeners.getOrDefault(eventType, emptyList()).forEach(eventListener 
-> {
-            eventListener.signalEvent(eventType, payload);
             if (eventListener instanceof KogitoProcessInstance 
kogitoProcessInstance) {
                 idList.add(kogitoProcessInstance.getId());
+                ProcessInstance<?> processInstance = 
kogitoProcessInstance.unwrap();
+                // this will enforce access to the lock mechanism logic.
+                processInstance.send(SignalFactory.of(eventType, 
processInstance));
+            } else {
+                eventListener.signalEvent(eventType, payload);
             }
         });
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to