Skip to content
Open
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
20 changes: 10 additions & 10 deletions geronimo-opentracing-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<parent>
<artifactId>geronimo-opentracing-parent</artifactId>
<groupId>org.apache.geronimo</groupId>
<version>1.0.4-SNAPSHOT</version>
<version>2.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand All @@ -43,15 +43,15 @@
<Import-Package>
io.opentracing,io.opentracing.propagation,
io.opentracing.tag,
javax.annotation;version="[1.0,3)",
javax.json.bind;version="[1.0,3)";resolution:=optional,
javax.servlet,
javax.servlet.http,
javax.ws.rs;version="[2,3)",
javax.ws.rs.client;version="[2,3)",
javax.ws.rs.container;version="[2,3)",
javax.ws.rs.core;version="[2,3)",
javax.ws.rs.ext;version="[2,3)",
jakarta.annotation;version="[1.0,3)",
jakarta.json.bind;version="[1.0,3)";resolution:=optional,
jakarta.servlet,
jakarta.servlet.http,
jakarta.ws.rs;version="[2,3)",
jakarta.ws.rs.client;version="[2,3)",
jakarta.ws.rs.container;version="[2,3)",
jakarta.ws.rs.core;version="[2,3)",
jakarta.ws.rs.ext;version="[2,3)",
*
</Import-Package>
</instructions>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Optional;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.MultivaluedMap;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.core.MultivaluedMap;

import org.apache.geronimo.microprofile.opentracing.common.config.GeronimoOpenTracingConfig;
import org.apache.geronimo.microprofile.opentracing.common.spi.Bus;
Expand Down Expand Up @@ -80,7 +81,12 @@ public ScopeManager scopeManager() {

@Override
public Span activeSpan() {
return ofNullable(scopeManager.active()).map(Scope::span).orElse(null);
return ofNullable(scopeManager.activeSpan()).orElse(null);
}

@Override
public Scope activateSpan(final Span span) {
return scopeManager.activate(span);
}

@Override
Expand Down Expand Up @@ -153,6 +159,11 @@ public <C> SpanContext extract(final Format<C> format, final C carrier) {
return null;
}

@Override
public void close() {
Optional.of(activeSpan()).ifPresent(Span::finish);
}

protected Span processNewSpan(final SpanImpl span) {
return span;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Supplier;

import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;

import org.apache.geronimo.microprofile.opentracing.common.config.GeronimoOpenTracingConfig;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import java.util.Iterator;
import java.util.Map;

import javax.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.MultivaluedMap;

import io.opentracing.propagation.TextMap;

Expand All @@ -38,7 +38,7 @@ public JaxRsHeaderTextMap(final MultivaluedMap<String, T> headers) {
@Override
public Iterator<Map.Entry<String, String>> iterator() {
final Iterator<String> iterator = headers.keySet().iterator();
return new Iterator<Map.Entry<String, String>>() {
return new Iterator<>() {

@Override
public boolean hasNext() {
Expand All @@ -48,7 +48,7 @@ public boolean hasNext() {
@Override
public Map.Entry<String, String> next() {
final String next = iterator.next();
return new Map.Entry<String, String>() {
return new Map.Entry<>() {

@Override
public String getKey() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ public class ScopeImpl implements Scope {

private final Runnable onClose;

public ScopeImpl(final Runnable onClose, final Span span, final boolean finishSpanOnClose) {
public ScopeImpl(final Runnable onClose, final Span span) {
this.onClose = onClose;
this.span = span;
this.finishOnClose = finishSpanOnClose;
this.finishOnClose = true;
}

@Override
Expand All @@ -46,7 +46,6 @@ public void close() {
}
}

@Override
public Span span() {
return span;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,29 +25,30 @@ public class ScopeManagerImpl implements ScopeManager {

private final ThreadLocal<Scope> current = new ThreadLocal<>();

public void clear() {
current.remove();
}

@Override
public Scope activate(final Span span, final boolean finishSpanOnClose) {
public Scope activate(final Span span) {
final Thread thread = Thread.currentThread();
final Scope oldScope = current.get();
final ScopeImpl newScope = new ScopeImpl(() -> {
if (Thread.currentThread() == thread) {
current.set(oldScope);
} // else error?
}, span, finishSpanOnClose);
}, span);
current.set(newScope);
return newScope;
}

@Override
public Scope active() {
final Scope scope = current.get();
public Span activeSpan() {
final ScopeImpl scope = (ScopeImpl) current.get();
if (scope == null) {
current.remove();
return null;
}
return scope;
}

public void clear() {
current.remove();
return scope.span();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import io.opentracing.propagation.TextMap;

Expand All @@ -43,7 +43,7 @@ public HttpServletRequest getRequest() {
@Override
public Iterator<Map.Entry<String, String>> iterator() {
final Enumeration<String> iterator = request.getHeaderNames();
return new Iterator<Map.Entry<String, String>>() {
return new Iterator<>() {

@Override
public boolean hasNext() {
Expand All @@ -53,7 +53,7 @@ public boolean hasNext() {
@Override
public Map.Entry<String, String> next() {
final String next = iterator.nextElement();
return new Map.Entry<String, String>() {
return new Map.Entry<>() {

@Override
public String getKey() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@
*/
package org.apache.geronimo.microprofile.opentracing.common.impl;

import static java.util.stream.Collectors.toMap;
import io.opentracing.References;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.Tracer;
import io.opentracing.tag.Tag;

import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -28,11 +32,7 @@
import java.util.function.Consumer;
import java.util.stream.StreamSupport;

import io.opentracing.References;
import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.Tracer;
import static java.util.stream.Collectors.toMap;

public class SpanBuilderImpl implements Tracer.SpanBuilder {

Expand Down Expand Up @@ -105,17 +105,17 @@ public Tracer.SpanBuilder withTag(final String key, final Number value) {
}

@Override
public Tracer.SpanBuilder withStartTimestamp(final long microseconds) {
this.timestamp = microseconds;
public <T> Tracer.SpanBuilder withTag(final Tag<T> tag, final T t) {
tags.put(tag.getKey(), t);
return this;
}

@Override
public Scope startActive(final boolean finishSpanOnClose) {
return tracer.scopeManager().activate(startManual(), finishSpanOnClose);
public Tracer.SpanBuilder withStartTimestamp(final long microseconds) {
this.timestamp = microseconds;
return this;
}

@Override
public Span startManual() {
if (timestamp < 0) {
timestamp = TimeUnit.MILLISECONDS.toMicros(System.currentTimeMillis());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,16 @@ public Object getSpanId() {
return spanId;
}

@Override
public String toTraceId() {
return String.valueOf(getTraceId());
}

@Override
public String toSpanId() {
return String.valueOf(getSpanId());
}

@Override
public Iterable<Map.Entry<String, String>> baggageItems() {
return baggageItems.entrySet();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.tag.Tag;
import io.opentracing.tag.Tags;

public class SpanImpl implements Span {
Expand Down Expand Up @@ -107,6 +108,12 @@ public Span setTag(final String key, final Number value) {
return this;
}

@Override
public <T> Span setTag(final Tag<T> tag, final T t) {
tags.put(tag.getKey(), t);
return this;
}

@Override
public Span log(final Map<String, ?> fields) {
return log(startTimestamp, fields);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import java.util.concurrent.ExecutorService;

import javax.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.ClientBuilder;

import org.apache.geronimo.microprofile.opentracing.common.microprofile.thread.OpenTracingExecutorService;
import org.apache.geronimo.microprofile.opentracing.common.spi.Container;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,12 @@

import java.util.function.Consumer;

import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import jakarta.ws.rs.client.ClientRequestContext;
import jakarta.ws.rs.client.ClientRequestFilter;

import org.apache.geronimo.microprofile.opentracing.common.config.GeronimoOpenTracingConfig;
import org.apache.geronimo.microprofile.opentracing.common.impl.JaxRsHeaderTextMap;

import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.Tracer;
Expand Down Expand Up @@ -71,8 +70,7 @@ public void filter(final ClientRequestContext context) {
ofNullable(SpanContext.class.cast(context.getProperty(CHILD_OF)))
.ifPresent(parent -> builder.ignoreActiveSpan().asChildOf(parent));

final Scope scope = builder.startActive(true);
final Span span = scope.span();
final Span span = builder.start();
if (!skipDefaultTags) {
Tags.HTTP_METHOD.set(span, context.getMethod());
Tags.HTTP_URL.set(span, context.getUri().toASCIIString());
Expand All @@ -87,7 +85,7 @@ public void filter(final ClientRequestContext context) {
.ifPresent(consumer -> Consumer.class.cast(consumer).accept(span));

tracer.inject(span.context(), Format.Builtin.HTTP_HEADERS, new JaxRsHeaderTextMap<>(context.getHeaders()));
context.setProperty(OpenTracingClientRequestFilter.class.getName(), scope);
context.setProperty(OpenTracingClientRequestFilter.class.getName(), span);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,26 @@
*/
package org.apache.geronimo.microprofile.opentracing.common.microprofile.client;

import static java.util.Optional.ofNullable;

import javax.annotation.Priority;
import javax.ws.rs.Priorities;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientResponseContext;
import javax.ws.rs.client.ClientResponseFilter;

import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.tag.Tags;
import jakarta.annotation.Priority;
import jakarta.ws.rs.Priorities;
import jakarta.ws.rs.client.ClientRequestContext;
import jakarta.ws.rs.client.ClientResponseContext;
import jakarta.ws.rs.client.ClientResponseFilter;

import static java.util.Optional.ofNullable;

// @ApplicationScoped
@Priority(Priorities.HEADER_DECORATOR)
public class OpenTracingClientResponseFilter implements ClientResponseFilter {

@Override
public void filter(final ClientRequestContext req, final ClientResponseContext resp) {
ofNullable(req.getProperty(OpenTracingClientRequestFilter.class.getName())).map(Scope.class::cast)
.ifPresent(scope -> {
Tags.HTTP_STATUS.set(scope.span(), resp.getStatus());
scope.close();
ofNullable(req.getProperty(OpenTracingClientRequestFilter.class.getName())).map(Span.class::cast)
.ifPresent(span -> {
Tags.HTTP_STATUS.set(span, resp.getStatus());
span.finish();
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,11 @@
import java.util.regex.Pattern;
import java.util.stream.Stream;

import javax.ws.rs.HttpMethod;
import javax.ws.rs.Path;
import javax.ws.rs.container.DynamicFeature;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.Provider;
import jakarta.ws.rs.HttpMethod;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.container.DynamicFeature;
import jakarta.ws.rs.container.ResourceInfo;
import jakarta.ws.rs.core.FeatureContext;

import org.apache.geronimo.microprofile.opentracing.common.config.GeronimoOpenTracingConfig;
import org.apache.geronimo.microprofile.opentracing.common.spi.Container;
Expand Down
Loading