1717import io .dapr .durabletask .implementation .protobuf .OrchestratorService ;
1818import io .dapr .durabletask .implementation .protobuf .OrchestratorService .TaskFailureDetails ;
1919import io .dapr .durabletask .implementation .protobuf .TaskHubSidecarServiceGrpc ;
20+ import io .dapr .durabletask .orchestration .TaskOrchestrationFactories ;
2021import io .grpc .Channel ;
2122import io .grpc .ManagedChannel ;
2223import io .grpc .ManagedChannelBuilder ;
2324import io .grpc .Status ;
2425import io .grpc .StatusRuntimeException ;
26+ import org .apache .commons .lang3 .StringUtils ;
2527
2628import java .time .Duration ;
2729import java .util .HashMap ;
@@ -42,7 +44,8 @@ public final class DurableTaskGrpcWorker implements AutoCloseable {
4244 private static final Logger logger = Logger .getLogger (DurableTaskGrpcWorker .class .getPackage ().getName ());
4345 private static final Duration DEFAULT_MAXIMUM_TIMER_INTERVAL = Duration .ofDays (3 );
4446
45- private final HashMap <String , TaskOrchestrationFactory > orchestrationFactories = new HashMap <>();
47+ private final TaskOrchestrationFactories orchestrationFactories ;
48+
4649 private final HashMap <String , TaskActivityFactory > activityFactories = new HashMap <>();
4750
4851 private final ManagedChannel managedSidecarChannel ;
@@ -57,7 +60,7 @@ public final class DurableTaskGrpcWorker implements AutoCloseable {
5760 private Thread workerThread ;
5861
5962 DurableTaskGrpcWorker (DurableTaskGrpcWorkerBuilder builder ) {
60- this .orchestrationFactories . putAll ( builder .orchestrationFactories ) ;
63+ this .orchestrationFactories = builder .orchestrationFactories ;
6164 this .activityFactories .putAll (builder .activityFactories );
6265 this .appId = builder .appId ;
6366
@@ -115,7 +118,9 @@ public void start() {
115118 *
116119 */
117120 public void close () {
118- this .workerThread .interrupt ();
121+ if (this .workerThread != null ) {
122+ this .workerThread .interrupt ();
123+ }
119124 this .isNormalShutdown = true ;
120125 this .shutDownWorkerPool ();
121126 this .closeSideCarChannel ();
@@ -161,6 +166,7 @@ public void startAndBlock() {
161166 OrchestratorService .WorkItem .RequestCase requestType = workItem .getRequestCase ();
162167 if (requestType == OrchestratorService .WorkItem .RequestCase .ORCHESTRATORREQUEST ) {
163168 OrchestratorService .OrchestratorRequest orchestratorRequest = workItem .getOrchestratorRequest ();
169+
164170 logger .log (Level .FINEST ,
165171 String .format ("Processing orchestrator request for instance: {0}" ,
166172 orchestratorRequest .getInstanceId ()));
@@ -171,11 +177,22 @@ public void startAndBlock() {
171177 orchestratorRequest .getPastEventsList (),
172178 orchestratorRequest .getNewEventsList ());
173179
180+ var versionBuilder = OrchestratorService .OrchestrationVersion .newBuilder ();
181+
182+ if (StringUtils .isNotEmpty (taskOrchestratorResult .getVersion ())) {
183+ versionBuilder .setName (taskOrchestratorResult .getVersion ());
184+ }
185+
186+ if (taskOrchestratorResult .getPatches () != null ) {
187+ versionBuilder .addAllPatches (taskOrchestratorResult .getPatches ());
188+ }
189+
174190 OrchestratorService .OrchestratorResponse response = OrchestratorService .OrchestratorResponse .newBuilder ()
175191 .setInstanceId (orchestratorRequest .getInstanceId ())
176192 .addAllActions (taskOrchestratorResult .getActions ())
177193 .setCustomStatus (StringValue .of (taskOrchestratorResult .getCustomStatus ()))
178194 .setCompletionToken (workItem .getCompletionToken ())
195+ .setVersion (versionBuilder )
179196 .build ();
180197
181198 try {
0 commit comments