Skip to content

Commit a4b2d66

Browse files
committed
added API taking traceId and spanID
1 parent 66617d6 commit a4b2d66

File tree

10 files changed

+83
-14
lines changed

10 files changed

+83
-14
lines changed

sentry/src/main/java/io/sentry/HubAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,12 @@ public void reportFullyDisplayed() {
322322
return Sentry.continueTrace(sentryTrace, baggageHeaders);
323323
}
324324

325+
@Override
326+
public void continueTrace(
327+
final @NotNull String traceId, final @NotNull String spanId) {
328+
Sentry.continueTrace(traceId, spanId);
329+
}
330+
325331
@Override
326332
public @Nullable SentryTraceHeader getTraceparent() {
327333
return Sentry.getTraceparent();

sentry/src/main/java/io/sentry/HubScopesWrapper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,12 @@ public void reportFullyDisplayed() {
316316
return scopes.continueTrace(sentryTrace, baggageHeaders);
317317
}
318318

319+
@Override
320+
public void continueTrace(
321+
@NotNull String traceId, @NotNull String spanId) {
322+
scopes.continueTrace(traceId, spanId);
323+
}
324+
319325
@Override
320326
public @Nullable SentryTraceHeader getTraceparent() {
321327
return scopes.getTraceparent();

sentry/src/main/java/io/sentry/IScopes.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,14 @@ void setSpanContext(
657657
TransactionContext continueTrace(
658658
final @Nullable String sentryTrace, final @Nullable List<String> baggageHeaders);
659659

660+
/**
661+
* Continue a trace based on the trace ID and span ID provided
662+
*
663+
* @param traceId the trace ID
664+
* @param spanId the span ID this is continuing the trace from
665+
*/
666+
void continueTrace(final @NotNull String traceId, final @NotNull String spanId);
667+
660668
/**
661669
* Returns the "sentry-trace" header that allows tracing across services. Can also be used in
662670
* &lt;meta&gt; HTML tags. Also see {@link IScopes#getBaggage()}.

sentry/src/main/java/io/sentry/JsonSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ public <T> void serialize(@NotNull T entity, @NotNull Writer writer) throws IOEx
200200
Objects.requireNonNull(writer, "The Writer object is required.");
201201

202202
if (options.getLogger().isEnabled(SentryLevel.DEBUG)) {
203-
String serialized = serializeToString(entity, options.isEnablePrettySerializationOutput());
204-
options.getLogger().log(SentryLevel.DEBUG, "Serializing object: %s", serialized);
203+
// String serialized = serializeToString(entity, options.isEnablePrettySerializationOutput());
204+
// options.getLogger().log(SentryLevel.DEBUG, "Serializing object: %s", serialized);
205205
}
206206
JsonObjectWriter jsonObjectWriter = new JsonObjectWriter(writer, options.getMaxDepth());
207207
jsonObjectWriter.value(options.getLogger(), entity);

sentry/src/main/java/io/sentry/NoOpHub.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,10 @@ public void reportFullyDisplayed() {}
276276
return null;
277277
}
278278

279+
@Override
280+
public void continueTrace(
281+
final @NotNull String traceID, final @NotNull String spanId) {}
282+
279283
@Override
280284
public @Nullable SentryTraceHeader getTraceparent() {
281285
return null;

sentry/src/main/java/io/sentry/NoOpScopes.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,10 @@ public void reportFullyDisplayed() {}
271271
return null;
272272
}
273273

274+
@Override
275+
public void continueTrace(
276+
final @NotNull String traceId, final @NotNull String spanId) { }
277+
274278
@Override
275279
public @Nullable SentryTraceHeader getTraceparent() {
276280
return null;

sentry/src/main/java/io/sentry/PropagationContext.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@ public static PropagationContext fromHeaders(
5050
sentryTraceHeader.isSampled());
5151
}
5252

53+
public static @NotNull PropagationContext fromId(
54+
final @NotNull String traceId,
55+
final @NotNull String spanId) {
56+
return new PropagationContext(
57+
new SentryId(traceId),
58+
new SpanId(),
59+
new SpanId(spanId),
60+
null,
61+
null
62+
);
63+
}
64+
5365
private @NotNull SentryId traceId;
5466
private @NotNull SpanId spanId;
5567
private @Nullable SpanId parentSpanId;

sentry/src/main/java/io/sentry/Scopes.java

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -948,30 +948,41 @@ public void setActiveSpan(final @Nullable ISpan span) {
948948
getOptions().getCacheDirPath(), !getOptions().isEnableAutoSessionTracking());
949949
}
950950

951-
@Override
952-
public void reportFullyDisplayed() {
953-
if (getOptions().isEnableTimeToFullDisplayTracing()) {
954-
getOptions().getFullyDisplayedReporter().reportFullyDrawn();
955-
}
956-
}
957-
958951
@Override
959952
public @Nullable TransactionContext continueTrace(
960-
final @Nullable String sentryTrace, final @Nullable List<String> baggageHeaders) {
953+
final @Nullable String sentryTrace, final @Nullable List<String> baggageHeaders) {
961954
@NotNull
962955
PropagationContext propagationContext =
963-
PropagationContext.fromHeaders(getOptions().getLogger(), sentryTrace, baggageHeaders);
956+
PropagationContext.fromHeaders(getOptions().getLogger(), sentryTrace, baggageHeaders);
964957
configureScope(
965-
(scope) -> {
966-
scope.setPropagationContext(propagationContext);
967-
});
958+
(scope) -> {
959+
scope.setPropagationContext(propagationContext);
960+
});
968961
if (getOptions().isTracingEnabled()) {
969962
return TransactionContext.fromPropagationContext(propagationContext);
970963
} else {
971964
return null;
972965
}
973966
}
974967

968+
@Override
969+
public void continueTrace(
970+
final @NotNull String traceId, final @NotNull String spanID) {
971+
@NotNull
972+
PropagationContext propagationContext = PropagationContext.fromId(traceId, spanID);
973+
configureScope(
974+
(scope) -> {
975+
scope.setPropagationContext(propagationContext);
976+
});
977+
}
978+
979+
@Override
980+
public void reportFullyDisplayed() {
981+
if (getOptions().isEnableTimeToFullDisplayTracing()) {
982+
getOptions().getFullyDisplayedReporter().reportFullyDrawn();
983+
}
984+
}
985+
975986
@Override
976987
public @Nullable SentryTraceHeader getTraceparent() {
977988
if (!isEnabled()) {

sentry/src/main/java/io/sentry/ScopesAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,12 @@ public void reportFullyDisplayed() {
321321
return Sentry.continueTrace(sentryTrace, baggageHeaders);
322322
}
323323

324+
@Override
325+
public void continueTrace(
326+
final @NotNull String traceId, final @NotNull String spanId) {
327+
Sentry.continueTrace(traceId, spanId);
328+
}
329+
324330
@Override
325331
public @Nullable SentryTraceHeader getTraceparent() {
326332
return Sentry.getTraceparent();

sentry/src/main/java/io/sentry/Sentry.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,6 +1147,18 @@ public interface OptionsConfiguration<T extends SentryOptions> {
11471147
return getCurrentScopes().continueTrace(sentryTrace, baggageHeaders);
11481148
}
11491149

1150+
/**
1151+
* Continue a trace based on the trace ID and span ID provided
1152+
*
1153+
* @param traceId the trace ID
1154+
* @param spanId the span ID
1155+
*/
1156+
// return TransactionContext (if performance enabled) or null (if performance disabled)
1157+
public static void continueTrace(
1158+
final @NotNull String traceId, final @NotNull String spanId) {
1159+
getCurrentScopes().continueTrace(traceId, spanId);
1160+
}
1161+
11501162
/**
11511163
* Returns the "sentry-trace" header that allows tracing across services. Can also be used in
11521164
* &lt;meta&gt; HTML tags. Also see {@link Sentry#getBaggage()}.

0 commit comments

Comments
 (0)