This is an automated email from the ASF dual-hosted git repository.
wlo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/gobblin.git
The following commit(s) were added to refs/heads/master by this push:
new d4c9c35135 Add default value for OpenTelemetry attribute (#4065)
d4c9c35135 is described below
commit d4c9c3513521e9f0049bee489215738ccb37f09a
Author: Prateek Khandelwal <[email protected]>
AuthorDate: Tue Oct 8 00:57:46 2024 +0530
Add default value for OpenTelemetry attribute (#4065)
---
.../GaaSJobObservabilityEventProducer.java | 26 +++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git
a/gobblin-service/src/main/java/org/apache/gobblin/service/monitoring/GaaSJobObservabilityEventProducer.java
b/gobblin-service/src/main/java/org/apache/gobblin/service/monitoring/GaaSJobObservabilityEventProducer.java
index 5f612547fc..860f3ea587 100644
---
a/gobblin-service/src/main/java/org/apache/gobblin/service/monitoring/GaaSJobObservabilityEventProducer.java
+++
b/gobblin-service/src/main/java/org/apache/gobblin/service/monitoring/GaaSJobObservabilityEventProducer.java
@@ -76,6 +76,7 @@ public abstract class GaaSJobObservabilityEventProducer
implements Closeable {
public static final String ISSUES_READ_FAILED_METRIC_NAME =
GAAS_JOB_OBSERVABILITY_EVENT_PRODUCER_PREFIX + "getIssuesFailedCount";
public static final String GAAS_OBSERVABILITY_METRICS_GROUPNAME =
GAAS_JOB_OBSERVABILITY_EVENT_PRODUCER_PREFIX + "metrics";
public static final String GAAS_OBSERVABILITY_JOB_SUCCEEDED_METRIC_NAME =
"jobSucceeded";
+ private static final String DEFAULT_OPENTELEMETRY_ATTRIBUTE_VALUE = "-";
protected MetricContext metricContext;
protected State state;
@@ -138,16 +139,31 @@ public abstract class GaaSJobObservabilityEventProducer
implements Closeable {
}
public Attributes getEventAttributes(GaaSJobObservabilityEvent event) {
- Attributes tags =
Attributes.builder().put(TimingEvent.FlowEventConstants.FLOW_NAME_FIELD,
event.getFlowName())
- .put(TimingEvent.FlowEventConstants.FLOW_GROUP_FIELD,
event.getFlowGroup())
- .put(TimingEvent.FlowEventConstants.JOB_NAME_FIELD, event.getJobName())
+ Attributes tags =
Attributes.builder().put(TimingEvent.FlowEventConstants.FLOW_NAME_FIELD,
getOrDefault(event.getFlowName(), DEFAULT_OPENTELEMETRY_ATTRIBUTE_VALUE))
+ .put(TimingEvent.FlowEventConstants.FLOW_GROUP_FIELD,
getOrDefault(event.getFlowGroup(), DEFAULT_OPENTELEMETRY_ATTRIBUTE_VALUE))
+ .put(TimingEvent.FlowEventConstants.JOB_NAME_FIELD,
getOrDefault(event.getJobName(), DEFAULT_OPENTELEMETRY_ATTRIBUTE_VALUE))
.put(TimingEvent.FlowEventConstants.FLOW_EXECUTION_ID_FIELD,
event.getFlowExecutionId())
- .put(TimingEvent.FlowEventConstants.SPEC_EXECUTOR_FIELD,
event.getExecutorId())
- .put(TimingEvent.FlowEventConstants.FLOW_EDGE_FIELD,
event.getFlowEdgeId())
+ .put(TimingEvent.FlowEventConstants.SPEC_EXECUTOR_FIELD,
getOrDefault(event.getExecutorId(), DEFAULT_OPENTELEMETRY_ATTRIBUTE_VALUE))
+ .put(TimingEvent.FlowEventConstants.FLOW_EDGE_FIELD,
getOrDefault(event.getFlowEdgeId(), DEFAULT_OPENTELEMETRY_ATTRIBUTE_VALUE))
.build();
return tags;
}
+ /**
+ * Returns the given string value if it is not empty (i.e., not null and not
empty).
+ * Otherwise, returns the specified default value.
+ *
+ * <p>This method utilizes {@link
org.apache.commons.lang3.StringUtils#isNotEmpty(CharSequence)}
+ * to check if the string is non-empty.</p>
+ *
+ * @param value the string to check
+ * @param defaultValue the default value to return if the provided string is
empty or null
+ * @return the original string if it is not empty; otherwise, the provided
default value
+ */
+ private String getOrDefault(String value, String defaultValue) {
+ return StringUtils.isNotEmpty(value) ? value : defaultValue;
+ }
+
/**
* Emits the GaaSJobObservabilityEvent with the mechanism that the child
class is built upon e.g. Kafka
* @param event