Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,21 @@
*/
package io.micrometer.tracing.brave.bridge;

import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.Baggage;

import java.util.AbstractMap;
import java.util.List;
import java.util.Objects;

class BraveBaggageFields {

private final List<AbstractMap.SimpleEntry<BaggageInScope, String>> entries;
private final List<AbstractMap.SimpleEntry<Baggage, String>> entries;

BraveBaggageFields(List<AbstractMap.SimpleEntry<BaggageInScope, String>> entries) {
BraveBaggageFields(List<AbstractMap.SimpleEntry<Baggage, String>> entries) {
this.entries = entries;
}

List<AbstractMap.SimpleEntry<BaggageInScope, String>> getEntries() {
List<AbstractMap.SimpleEntry<Baggage, String>> getEntries() {
return entries;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package io.micrometer.tracing.brave.bridge;

import brave.baggage.BaggageField;
import io.micrometer.tracing.Baggage;
import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.TraceContext;

Expand All @@ -25,7 +26,7 @@
* @author Marcin Grzejszczak
* @since 1.0.0
*/
class BraveBaggageInScope implements BaggageInScope {
class BraveBaggageInScope implements Baggage, BaggageInScope {

private final BaggageField delegate;

Expand All @@ -49,17 +50,13 @@ public String get(TraceContext traceContext) {
}

@Override
public BraveBaggageInScope set(String value) {
public Baggage set(String value) {
this.delegate.updateValue(value);
return this;
}

BaggageField unwrap() {
return this.delegate;
}

@Override
public BraveBaggageInScope set(TraceContext traceContext, String value) {
public Baggage set(TraceContext traceContext, String value) {
this.delegate.updateValue(BraveTraceContext.toBrave(traceContext), value);
return this;
}
Expand All @@ -71,7 +68,6 @@ public BaggageInScope makeCurrent() {

@Override
public void close() {

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@
*/
package io.micrometer.tracing.brave.bridge;

import java.io.Closeable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import brave.baggage.BaggageField;
import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.Baggage;
import io.micrometer.tracing.BaggageManager;
import io.micrometer.tracing.TraceContext;

import java.io.Closeable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
* Brave implementation of a {@link BaggageManager}.
*
Expand All @@ -32,20 +32,20 @@
*/
public class BraveBaggageManager implements Closeable, BaggageManager {

private static final Map<String, BaggageInScope> CACHE = new ConcurrentHashMap<>();
private static final Map<String, Baggage> CACHE = new ConcurrentHashMap<>();

@Override
public Map<String, String> getAllBaggage() {
return BaggageField.getAllValues();
}

@Override
public BaggageInScope getBaggage(String name) {
public Baggage getBaggage(String name) {
return createBaggage(name);
}

@Override
public BaggageInScope getBaggage(TraceContext traceContext, String name) {
public Baggage getBaggage(TraceContext traceContext, String name) {
BaggageField baggageField = BaggageField.getByName(BraveTraceContext.toBrave(traceContext), name);
if (baggageField == null) {
return null;
Expand All @@ -54,12 +54,12 @@ public BaggageInScope getBaggage(TraceContext traceContext, String name) {
}

@Override
public BaggageInScope createBaggage(String name) {
public Baggage createBaggage(String name) {
return CACHE.computeIfAbsent(name, s -> new BraveBaggageInScope(BaggageField.create(s)));
}

@Override
public BaggageInScope createBaggage(String name, String value) {
public Baggage createBaggage(String name, String value) {
return createBaggage(name).set(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,22 +112,22 @@ public Map<String, String> getAllBaggage() {
}

@Override
public BaggageInScope getBaggage(String name) {
public Baggage getBaggage(String name) {
return this.braveBaggageManager.getBaggage(name);
}

@Override
public BaggageInScope getBaggage(TraceContext traceContext, String name) {
public Baggage getBaggage(TraceContext traceContext, String name) {
return this.braveBaggageManager.getBaggage(traceContext, name);
}

@Override
public BaggageInScope createBaggage(String name) {
public Baggage createBaggage(String name) {
return this.braveBaggageManager.createBaggage(name);
}

@Override
public BaggageInScope createBaggage(String name, String value) {
public Baggage createBaggage(String name, String value) {
return this.braveBaggageManager.createBaggage(name).set(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import io.micrometer.common.util.StringUtils;
import io.micrometer.common.util.internal.logging.InternalLogger;
import io.micrometer.common.util.internal.logging.InternalLoggerFactory;
import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.Baggage;
import io.micrometer.tracing.BaggageManager;
import io.micrometer.tracing.internal.EncodingUtils;

Expand Down Expand Up @@ -212,8 +212,7 @@ public <R> TraceContext.Injector<R> injector(Setter<R, String> setter) {

private <R> void addTraceState(Setter<R, String> setter, TraceContext context, R carrier) {
if (carrier != null && this.braveBaggageManager != null) {
BaggageInScope baggage = this.braveBaggageManager.getBaggage(BraveTraceContext.fromBrave(context),
TRACE_STATE);
Baggage baggage = this.braveBaggageManager.getBaggage(BraveTraceContext.fromBrave(context), TRACE_STATE);
if (baggage == null) {
return;
}
Expand Down Expand Up @@ -363,13 +362,13 @@ public <R> TraceContext.Injector<R> injector(Propagation.Setter<R, String> sette
<R> TraceContextOrSamplingFlags contextWithBaggage(R carrier, TraceContextOrSamplingFlags flags,
Propagation.Getter<R, String> getter) {
String baggageHeader = getter.get(carrier, FIELD);
List<AbstractMap.SimpleEntry<BaggageInScope, String>> pairs = baggageHeader == null || baggageHeader.isEmpty()
List<AbstractMap.SimpleEntry<Baggage, String>> pairs = baggageHeader == null || baggageHeader.isEmpty()
? Collections.emptyList() : addBaggageToContext(baggageHeader);
return flags.toBuilder().addExtra(new BraveBaggageFields(pairs)).build();
}

List<AbstractMap.SimpleEntry<BaggageInScope, String>> addBaggageToContext(String baggageHeader) {
List<AbstractMap.SimpleEntry<BaggageInScope, String>> pairs = new ArrayList<>();
List<AbstractMap.SimpleEntry<Baggage, String>> addBaggageToContext(String baggageHeader) {
List<AbstractMap.SimpleEntry<Baggage, String>> pairs = new ArrayList<>();
String[] entries = baggageHeader.split(",");
for (String entry : entries) {
int beginningOfMetadata = entry.indexOf(";");
Expand All @@ -381,7 +380,7 @@ List<AbstractMap.SimpleEntry<BaggageInScope, String>> addBaggageToContext(String
try {
String key = keyAndValue[i].trim();
String value = keyAndValue[i + 1].trim();
BaggageInScope baggage = this.braveBaggageManager.createBaggage(key);
Baggage baggage = this.braveBaggageManager.createBaggage(key);
pairs.add(new AbstractMap.SimpleEntry<>(baggage, value));
}
catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
*/
package io.micrometer.tracing.otel.bridge;

import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.CurrentTraceContext;
import io.micrometer.tracing.TraceContext;
Expand All @@ -27,13 +24,16 @@
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;

import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

/**
* OpenTelemetry implementation of a {@link BaggageInScope}.
*
* @author Marcin Grzejszczak
* @since 1.0.0
*/
class OtelBaggageInScope implements BaggageInScope {
class OtelBaggageInScope implements io.micrometer.tracing.Baggage, BaggageInScope {

private final OtelBaggageManager otelBaggageManager;

Expand Down Expand Up @@ -73,11 +73,11 @@ public String get(TraceContext traceContext) {
}

@Override
public BaggageInScope set(String value) {
public io.micrometer.tracing.Baggage set(String value) {
return doSet(this.currentTraceContext.context(), value);
}

private BaggageInScope doSet(TraceContext context, String value) {
private io.micrometer.tracing.Baggage doSet(TraceContext context, String value) {
Context current = Context.current();
Span currentSpan = Span.current();
io.opentelemetry.api.baggage.Baggage baggage;
Expand Down Expand Up @@ -112,7 +112,7 @@ private Entry entry() {
}

@Override
public BaggageInScope set(TraceContext traceContext, String value) {
public io.micrometer.tracing.Baggage set(TraceContext traceContext, String value) {
return doSet(traceContext, value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/
package io.micrometer.tracing.otel.bridge;

import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.BaggageManager;
import io.micrometer.tracing.CurrentTraceContext;
import io.micrometer.tracing.TraceContext;
Expand Down Expand Up @@ -84,12 +83,12 @@ CompositeBaggage currentBaggage() {
}

@Override
public BaggageInScope getBaggage(String name) {
public io.micrometer.tracing.Baggage getBaggage(String name) {
Entry entry = getBaggage(name, currentBaggage());
return createNewEntryIfMissing(name, entry);
}

BaggageInScope createNewEntryIfMissing(String name, Entry entry) {
io.micrometer.tracing.Baggage createNewEntryIfMissing(String name, Entry entry) {
if (entry == null) {
return createBaggage(name);
}
Expand All @@ -101,7 +100,7 @@ private Entry getBaggage(String name, io.opentelemetry.api.baggage.Baggage bagga
}

@Override
public BaggageInScope getBaggage(TraceContext traceContext, String name) {
public io.micrometer.tracing.Baggage getBaggage(TraceContext traceContext, String name) {
OtelTraceContext context = (OtelTraceContext) traceContext;
Deque<Context> stack = new ArrayDeque<>();
stack.addFirst(Context.current());
Expand Down Expand Up @@ -130,24 +129,23 @@ private Entry entryForName(String name, io.opentelemetry.api.baggage.Baggage bag
.findFirst().orElse(null);
}

private BaggageInScope otelBaggage(Entry entry) {
private io.micrometer.tracing.Baggage otelBaggage(Entry entry) {
return new OtelBaggageInScope(this, this.currentTraceContext, this.tagFields, entry);
}

@Override
public BaggageInScope createBaggage(String name) {
public io.micrometer.tracing.Baggage createBaggage(String name) {
return createBaggage(name, "");
}

@Override
public BaggageInScope createBaggage(String name, String value) {
BaggageInScope baggageInScope = baggageWithValue(name, "");
return baggageInScope.set(value);
public io.micrometer.tracing.Baggage createBaggage(String name, String value) {
io.micrometer.tracing.Baggage baggage = baggageWithValue(name, "");
return baggage.set(value);
}

private BaggageInScope baggageWithValue(String name, String value) {
List<String> remoteFieldsFields = this.remoteFields;
boolean remoteField = remoteFieldsFields.stream().map(String::toLowerCase)
private io.micrometer.tracing.Baggage baggageWithValue(String name, String value) {
boolean remoteField = this.remoteFields.stream().map(String::toLowerCase)
.anyMatch(s -> s.equals(name.toLowerCase()));
BaggageEntryMetadata entryMetadata = BaggageEntryMetadata.create(propagationString(remoteField));
Entry entry = new Entry(name, value, entryMetadata);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,22 +132,22 @@ public Map<String, String> getAllBaggage() {
}

@Override
public BaggageInScope getBaggage(String name) {
public Baggage getBaggage(String name) {
return this.otelBaggageManager.getBaggage(name);
}

@Override
public BaggageInScope getBaggage(TraceContext traceContext, String name) {
public Baggage getBaggage(TraceContext traceContext, String name) {
return this.otelBaggageManager.getBaggage(traceContext, name);
}

@Override
public BaggageInScope createBaggage(String name) {
public Baggage createBaggage(String name) {
return this.otelBaggageManager.createBaggage(name);
}

@Override
public BaggageInScope createBaggage(String name, String value) {
public Baggage createBaggage(String name, String value) {
return this.otelBaggageManager.createBaggage(name, value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package io.micrometer.tracing.otel;

import io.micrometer.tracing.Baggage;
import io.micrometer.tracing.BaggageInScope;
import io.micrometer.tracing.Span;
import io.micrometer.tracing.Tracer;
Expand Down Expand Up @@ -180,19 +181,21 @@ void should_not_fail_when_baggage_manager_is_noop() throws Exception {
tracer = new OtelTracer(otelTracer, otelCurrentTraceContext, event -> {
});

BaggageInScope foo = tracer.createBaggage("foo");
then(foo).isSameAs(BaggageInScope.NOOP);
Baggage foo = tracer.createBaggage("foo");
then(foo).isSameAs(Baggage.NOOP);
then(foo.get()).isNull();
then(foo.get()).isNull();
then(foo.get(null)).isNull();
then(foo.set(null, "baz")).isSameAs(BaggageInScope.NOOP);
then(foo.set(null, "baz")).isSameAs(Baggage.NOOP);
then(foo.get(null)).isNull();
foo.close();
then(foo.makeCurrent()).isSameAs(BaggageInScope.NOOP);

then(tracer.getBaggage("foo")).isSameAs(BaggageInScope.NOOP);
BaggageInScope fooInScope = foo.makeCurrent();
then(fooInScope).isSameAs(BaggageInScope.NOOP);
fooInScope.close();

then(tracer.getBaggage("foo")).isSameAs(Baggage.NOOP);
then(tracer.getAllBaggage()).isEmpty();
then(tracer.createBaggage("foo", "bar")).isSameAs(BaggageInScope.NOOP);
then(tracer.createBaggage("foo", "bar")).isSameAs(Baggage.NOOP);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ void should_propagate_context_with_baggage() {
Span span = extract.start();

BaggageInScope baggage = new OtelBaggageManager(otelCurrentTraceContext, Collections.emptyList(),
Collections.emptyList()).getBaggage(span.context(), "foo");
Collections.emptyList()).getBaggage(span.context(), "foo").makeCurrent();
try {
BDDAssertions.then(baggage.get(span.context())).isEqualTo("bar");
}
Expand Down
Loading