stankiewicz commented on code in PR #36962:
URL: https://github.com/apache/beam/pull/36962#discussion_r2643511948
##########
sdks/java/core/src/main/java/org/apache/beam/sdk/values/WindowedValues.java:
##########
@@ -996,6 +1089,51 @@ public List<? extends Coder<?>> getComponents() {
}
}
+ public static class OpenTelemetryContextSerializer {
+
+ private static final
TextMapSetter<BeamFnApi.Elements.ElementMetadata.Builder> SETTER =
+ (carrier, key, value) -> {
+ if (carrier == null) {
+ return;
+ }
+ if ("traceparent".equals(key)) {
+ carrier.setTraceparent(value);
+ } else if ("tracestate".equals(key)) {
+ carrier.setTracestate(value);
+ }
+ };
+
+ private static final TextMapGetter<BeamFnApi.Elements.ElementMetadata>
GETTER =
+ new TextMapGetter<BeamFnApi.Elements.ElementMetadata>() {
+ @Override
+ public Iterable<String> keys(BeamFnApi.Elements.ElementMetadata
carrier) {
+ return Lists.newArrayList("traceparent", "tracestate");
+ }
+
+ @Override
+ public @Nullable String get(
+ BeamFnApi.Elements.@Nullable ElementMetadata carrier, String
key) {
+ if (carrier == null) {
+ return null;
+ }
+ if ("traceparent".equals(key)) {
+ return carrier.getTraceparent();
+ } else if ("tracestate".equals(key)) {
+ return carrier.getTracestate();
+ }
+ return null;
+ }
+ };
+
+ public static void write(Context from,
BeamFnApi.Elements.ElementMetadata.Builder builder) {
+ W3CTraceContextPropagator.getInstance().inject(from, builder, SETTER);
+ }
+
+ public static Context read(BeamFnApi.Elements.ElementMetadata from) {
+ return W3CTraceContextPropagator.getInstance().extract(Context.root(),
from, GETTER);
Review Comment:
Yes, but I don't want to reimplement W3CTraceContextPropagator to have
getTraceState /getTraceParent methods.
On nits - ValueInSingleWindow is not implementing WindowedValue interface
now. Once it will, I can improve that.
Setter has builder already.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]