Skip to content

Commit 8fddf99

Browse files
adding cause tag for transient poll failures. (#775)
1 parent 1945a1a commit 8fddf99

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
lines changed

src/main/java/com/uber/cadence/internal/metrics/MetricsTag.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ public class MetricsTag {
2424
public static final String WORKFLOW_TYPE = "WorkflowType";
2525
public static final String REQUEST_TYPE = "RequestType";
2626
public static final String VERSION = "Version";
27+
public static final String CAUSE = "Cause";
2728
}

src/main/java/com/uber/cadence/internal/metrics/MetricsTagValue.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@
2020
public class MetricsTagValue {
2121
public static final String REQUEST_TYPE_NORMAL = "normal";
2222
public static final String REQUEST_TYPE_LONG_POLL = "long-poll";
23+
public static final String SERVICE_BUSY = "serviceBusy";
24+
public static final String INTERNAL_SERVICE_ERROR = "internalServiceError";
2325
}

src/main/java/com/uber/cadence/internal/worker/ActivityPollTask.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,24 @@
1717

1818
package com.uber.cadence.internal.worker;
1919

20+
import com.google.common.collect.ImmutableMap;
2021
import com.uber.cadence.InternalServiceError;
2122
import com.uber.cadence.PollForActivityTaskRequest;
2223
import com.uber.cadence.PollForActivityTaskResponse;
2324
import com.uber.cadence.ServiceBusyError;
2425
import com.uber.cadence.TaskList;
2526
import com.uber.cadence.TaskListMetadata;
27+
import com.uber.cadence.internal.metrics.MetricsTag;
2628
import com.uber.cadence.internal.metrics.MetricsType;
2729
import com.uber.cadence.serviceclient.IWorkflowService;
2830
import com.uber.m3.tally.Stopwatch;
2931
import org.apache.thrift.TException;
3032
import org.slf4j.Logger;
3133
import org.slf4j.LoggerFactory;
3234

35+
import static com.uber.cadence.internal.metrics.MetricsTagValue.INTERNAL_SERVICE_ERROR;
36+
import static com.uber.cadence.internal.metrics.MetricsTagValue.SERVICE_BUSY;
37+
3338
final class ActivityPollTask extends ActivityPollTaskBase {
3439

3540
private static final Logger log = LoggerFactory.getLogger(ActivityPollTask.class);
@@ -66,10 +71,18 @@ protected PollForActivityTaskResponse pollTask() throws TException {
6671
PollForActivityTaskResponse result;
6772
try {
6873
result = service.PollForActivityTask(pollRequest);
69-
} catch (InternalServiceError | ServiceBusyError e) {
70-
options.getMetricsScope().counter(MetricsType.ACTIVITY_POLL_TRANSIENT_FAILED_COUNTER).inc(1);
74+
} catch (InternalServiceError e) {
75+
options.getMetricsScope()
76+
.tagged(ImmutableMap.of(MetricsTag.CAUSE, INTERNAL_SERVICE_ERROR))
77+
.counter(MetricsType.ACTIVITY_POLL_TRANSIENT_FAILED_COUNTER).inc(1);
78+
throw e;
79+
} catch (ServiceBusyError e) {
80+
options.getMetricsScope()
81+
.tagged(ImmutableMap.of(MetricsTag.CAUSE, SERVICE_BUSY))
82+
.counter(MetricsType.ACTIVITY_POLL_TRANSIENT_FAILED_COUNTER).inc(1);
7183
throw e;
72-
} catch (TException e) {
84+
}
85+
catch (TException e) {
7386
options.getMetricsScope().counter(MetricsType.ACTIVITY_POLL_FAILED_COUNTER).inc(1);
7487
throw e;
7588
}

src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,15 @@
3030
import com.uber.m3.tally.Stopwatch;
3131
import com.uber.m3.util.Duration;
3232
import com.uber.m3.util.ImmutableMap;
33+
3334
import java.util.Objects;
3435
import org.apache.thrift.TException;
3536
import org.slf4j.Logger;
3637
import org.slf4j.LoggerFactory;
3738

39+
import static com.uber.cadence.internal.metrics.MetricsTagValue.INTERNAL_SERVICE_ERROR;
40+
import static com.uber.cadence.internal.metrics.MetricsTagValue.SERVICE_BUSY;
41+
3842
final class WorkflowPollTask implements Poller.PollTask<PollForDecisionTaskResponse> {
3943

4044
private static final Logger log = LoggerFactory.getLogger(WorkflowWorker.class);
@@ -77,8 +81,15 @@ public PollForDecisionTaskResponse poll() throws TException {
7781
PollForDecisionTaskResponse result;
7882
try {
7983
result = service.PollForDecisionTask(pollRequest);
80-
} catch (InternalServiceError | ServiceBusyError e) {
81-
metricScope.counter(MetricsType.DECISION_POLL_TRANSIENT_FAILED_COUNTER).inc(1);
84+
} catch (InternalServiceError e) {
85+
metricScope
86+
.tagged(ImmutableMap.of(MetricsTag.CAUSE, INTERNAL_SERVICE_ERROR))
87+
.counter(MetricsType.DECISION_POLL_TRANSIENT_FAILED_COUNTER).inc(1);
88+
throw e;
89+
} catch (ServiceBusyError e) {
90+
metricScope
91+
.tagged(ImmutableMap.of(MetricsTag.CAUSE, SERVICE_BUSY))
92+
.counter(MetricsType.DECISION_POLL_TRANSIENT_FAILED_COUNTER).inc(1);
8293
throw e;
8394
} catch (TException e) {
8495
metricScope.counter(MetricsType.DECISION_POLL_FAILED_COUNTER).inc(1);

0 commit comments

Comments
 (0)