32
32
import com .uber .m3 .tally .Stopwatch ;
33
33
import com .uber .m3 .util .ImmutableMap ;
34
34
import io .opentracing .Span ;
35
+ import io .opentracing .Tracer ;
35
36
import java .time .Duration ;
36
37
import java .util .Map ;
37
38
import java .util .Objects ;
@@ -50,6 +51,7 @@ public final class LocalActivityWorker extends SuspendableWorkerBase {
50
51
private final SingleWorkerOptions options ;
51
52
private final LocalActivityPollTask laPollTask ;
52
53
private final TracingPropagator spanFactory ;
54
+ private final Tracer tracer ;
53
55
54
56
public LocalActivityWorker (
55
57
String domain , String taskList , SingleWorkerOptions options , ActivityTaskHandler handler ) {
@@ -58,6 +60,7 @@ public LocalActivityWorker(
58
60
this .handler = handler ;
59
61
this .laPollTask = new LocalActivityPollTask ();
60
62
this .spanFactory = new TracingPropagator (options .getTracer ());
63
+ this .tracer = options .getTracer ();
61
64
62
65
PollerOptions pollerOptions = options .getPollerOptions ();
63
66
if (pollerOptions .getPollThreadNamePrefix () == null ) {
@@ -129,42 +132,43 @@ public void handle(Task task) throws Exception {
129
132
propagateContext (task .params );
130
133
131
134
// start and activate span for local activities
132
- Span span = spanFactory .activateSpanForExecuteLocalActivity (task );
133
-
134
- task .taskStartTime = System .currentTimeMillis ();
135
- ActivityTaskHandler .Result result = handleLocalActivity (task );
136
-
137
- LocalActivityMarkerData .Builder markerBuilder = new LocalActivityMarkerData .Builder ();
138
- markerBuilder .setActivityId (task .params .getActivityId ());
139
- markerBuilder .setActivityType (task .params .getActivityType ());
140
- long replayTimeMillis =
141
- task .currentTimeMillis .getAsLong ()
142
- + (System .currentTimeMillis () - task .replayTimeUpdatedAtMillis .getAsLong ());
143
- markerBuilder .setReplayTimeMillis (replayTimeMillis );
144
-
145
- if (result .getTaskCompleted () != null ) {
146
- markerBuilder .setResult (result .getTaskCompleted ().getResult ());
147
- } else if (result .getTaskFailedResult () != null ) {
148
- markerBuilder .setTaskFailedRequest (result .getTaskFailedResult ().getTaskFailedRequest ());
149
- markerBuilder .setAttempt (result .getAttempt ());
150
- markerBuilder .setBackoff (result .getBackoff ());
151
- } else {
152
- markerBuilder .setTaskCancelledRequest (result .getTaskCancelled ());
135
+ Span span = spanFactory .spanForExecuteLocalActivity (task );
136
+ try (io .opentracing .Scope scope = tracer .activateSpan (span )) {
137
+ task .taskStartTime = System .currentTimeMillis ();
138
+ ActivityTaskHandler .Result result = handleLocalActivity (task );
139
+
140
+ LocalActivityMarkerData .Builder markerBuilder = new LocalActivityMarkerData .Builder ();
141
+ markerBuilder .setActivityId (task .params .getActivityId ());
142
+ markerBuilder .setActivityType (task .params .getActivityType ());
143
+ long replayTimeMillis =
144
+ task .currentTimeMillis .getAsLong ()
145
+ + (System .currentTimeMillis () - task .replayTimeUpdatedAtMillis .getAsLong ());
146
+ markerBuilder .setReplayTimeMillis (replayTimeMillis );
147
+
148
+ if (result .getTaskCompleted () != null ) {
149
+ markerBuilder .setResult (result .getTaskCompleted ().getResult ());
150
+ } else if (result .getTaskFailedResult () != null ) {
151
+ markerBuilder .setTaskFailedRequest (result .getTaskFailedResult ().getTaskFailedRequest ());
152
+ markerBuilder .setAttempt (result .getAttempt ());
153
+ markerBuilder .setBackoff (result .getBackoff ());
154
+ } else {
155
+ markerBuilder .setTaskCancelledRequest (result .getTaskCancelled ());
156
+ }
157
+
158
+ LocalActivityMarkerData marker = markerBuilder .build ();
159
+
160
+ HistoryEvent event = new HistoryEvent ();
161
+ event .setEventType (EventType .MarkerRecorded );
162
+ MarkerRecordedEventAttributes attributes =
163
+ new MarkerRecordedEventAttributes ()
164
+ .setMarkerName (ClockDecisionContext .LOCAL_ACTIVITY_MARKER_NAME )
165
+ .setHeader (marker .getHeader (options .getDataConverter ()))
166
+ .setDetails (marker .getResult ());
167
+ event .setMarkerRecordedEventAttributes (attributes );
168
+ task .eventConsumer .accept (event );
169
+ } finally {
170
+ span .finish ();
153
171
}
154
-
155
- LocalActivityMarkerData marker = markerBuilder .build ();
156
-
157
- HistoryEvent event = new HistoryEvent ();
158
- event .setEventType (EventType .MarkerRecorded );
159
- MarkerRecordedEventAttributes attributes =
160
- new MarkerRecordedEventAttributes ()
161
- .setMarkerName (ClockDecisionContext .LOCAL_ACTIVITY_MARKER_NAME )
162
- .setHeader (marker .getHeader (options .getDataConverter ()))
163
- .setDetails (marker .getResult ());
164
- event .setMarkerRecordedEventAttributes (attributes );
165
- task .eventConsumer .accept (event );
166
-
167
- span .finish ();
168
172
}
169
173
170
174
@ Override
0 commit comments