Skip to content

Commit fbdbb89

Browse files
authored
Trace Failure Origins (#19550)
* Clarify local datadog instructions * Add failure origins to trace
1 parent 903fcf1 commit fbdbb89

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

airbyte-metrics/metrics-lib/src/main/java/io/airbyte/metrics/lib/ApmTraceConstants.java

+5
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ public static final class Tags {
6363
*/
6464
public static final String DOCKER_IMAGE_KEY = "docker_image";
6565

66+
/**
67+
* Name of the APM trace tag that holds the failure origin(s) associated with the trace.
68+
*/
69+
public static final String FAILURE_ORIGINS_KEY = "failure_origins";
70+
6671
/**
6772
* Name of the APM trace tag that holds the job ID value associated with the trace.
6873
*/

airbyte-workers/src/main/java/io/airbyte/workers/temporal/scheduling/activities/JobCreationAndStatusUpdateActivityImpl.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static io.airbyte.metrics.lib.ApmTraceConstants.ACTIVITY_TRACE_OPERATION_NAME;
99
import static io.airbyte.metrics.lib.ApmTraceConstants.Tags.ATTEMPT_NUMBER_KEY;
1010
import static io.airbyte.metrics.lib.ApmTraceConstants.Tags.CONNECTION_ID_KEY;
11+
import static io.airbyte.metrics.lib.ApmTraceConstants.Tags.FAILURE_ORIGINS_KEY;
1112
import static io.airbyte.metrics.lib.ApmTraceConstants.Tags.JOB_ID_KEY;
1213
import static io.airbyte.persistence.job.models.AttemptStatus.FAILED;
1314

@@ -22,6 +23,7 @@
2223
import io.airbyte.config.Configs.WorkerEnvironment;
2324
import io.airbyte.config.DestinationConnection;
2425
import io.airbyte.config.FailureReason;
26+
import io.airbyte.config.FailureReason.FailureOrigin;
2527
import io.airbyte.config.JobConfig;
2628
import io.airbyte.config.JobOutput;
2729
import io.airbyte.config.JobSyncConfig;
@@ -56,6 +58,7 @@
5658
import io.airbyte.workers.run.TemporalWorkerRunFactory;
5759
import io.airbyte.workers.run.WorkerRun;
5860
import io.micronaut.context.annotation.Requires;
61+
import io.micronaut.core.util.CollectionUtils;
5962
import jakarta.inject.Singleton;
6063
import java.io.IOException;
6164
import java.nio.file.Path;
@@ -67,6 +70,7 @@
6770
import java.util.OptionalLong;
6871
import java.util.Set;
6972
import java.util.UUID;
73+
import java.util.stream.Collectors;
7074
import lombok.extern.slf4j.Slf4j;
7175

7276
@Slf4j
@@ -287,12 +291,16 @@ public void jobFailure(final JobFailureInput input) {
287291
@Override
288292
public void attemptFailure(final AttemptFailureInput input) {
289293
try {
290-
ApmTraceUtils.addTagsToTrace(Map.of(ATTEMPT_NUMBER_KEY, input.getAttemptId(), JOB_ID_KEY, input.getJobId()));
291-
292294
final int attemptId = input.getAttemptId();
293295
final long jobId = input.getJobId();
294296
final AttemptFailureSummary failureSummary = input.getAttemptFailureSummary();
295297

298+
ApmTraceUtils.addTagsToTrace(Map.of(ATTEMPT_NUMBER_KEY, attemptId, JOB_ID_KEY, jobId));
299+
if (CollectionUtils.isNotEmpty(failureSummary.getFailures())) {
300+
ApmTraceUtils.addTagsToTrace(Map.of(FAILURE_ORIGINS_KEY, failureSummary.getFailures().stream().map(FailureReason::getFailureOrigin).map(
301+
FailureOrigin::name).collect(Collectors.joining(","))));
302+
}
303+
296304
jobPersistence.failAttempt(jobId, attemptId);
297305
jobPersistence.writeAttemptFailureSummary(jobId, attemptId, failureSummary);
298306

docker-compose.datadog.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# This exists _only_ for testing datadog integrations!
33
#
44
# Usage:
5-
# 1. create an API Key in datadog
5+
# 1. Create an organization API Key in DataDog (Organization Settings > API Keys)
66
# 2. wget -O dd-java-agent.jar 'https://dtdg.co/latest-java-tracer'
77
# 3. DD_API_KEY=[datadog api key] VERSION=dev docker-compose -f docker-compose.yaml -f docker-compose.datadog.yaml up -d
88
version: "3.7"

0 commit comments

Comments
 (0)