Skip to content

Commit

Permalink
[#104540] update reactor retry when
Browse files Browse the repository at this point in the history
  • Loading branch information
jaehong-kim committed Nov 9, 2023
1 parent e7a45ec commit 8ad1d2e
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 10 deletions.
1 change: 1 addition & 0 deletions agent/src/main/resources/profiles/local/pinpoint.config
Original file line number Diff line number Diff line change
Expand Up @@ -1108,6 +1108,7 @@ profiler.reactor.trace.delay=true
profiler.reactor.trace.interval=true
# retry, retryWhen, timeout
profiler.reactor.trace.retry=true
profiler.reactor.mark.error.retry=false
profiler.reactor.trace.timeout=true
# FLUX/MONO subscribe
profiler.reactor.trace.subscribe=true
Expand Down
1 change: 1 addition & 0 deletions agent/src/main/resources/profiles/release/pinpoint.config
Original file line number Diff line number Diff line change
Expand Up @@ -1106,6 +1106,7 @@ profiler.reactor.trace.delay=true
profiler.reactor.trace.interval=true
# retry, retryWhen, timeout
profiler.reactor.trace.retry=true
profiler.reactor.mark.error.retry=false
profiler.reactor.trace.timeout=true
# FLUX/MONO subscribe
profiler.reactor.trace.subscribe=true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public class ReactorPluginConfig {
private final boolean traceRetry;
private final boolean traceTimeout;
private final boolean traceSubscribe;
private final boolean markErrorRetry;

public ReactorPluginConfig(ProfilerConfig config) {
Objects.requireNonNull(config, "config");
Expand All @@ -47,6 +48,8 @@ public ReactorPluginConfig(ProfilerConfig config) {
this.traceInterval = config.readBoolean("profiler.reactor.trace.interval", true);

this.traceRetry = config.readBoolean("profiler.reactor.trace.retry", true);
this.markErrorRetry = config.readBoolean("profiler.reactor.mark.error.retry", false);

this.traceTimeout = config.readBoolean("profiler.reactor.trace.timeout", true);
this.traceSubscribe = config.readBoolean("profiler.reactor.trace.subscribe", true);
}
Expand Down Expand Up @@ -87,6 +90,10 @@ public boolean isTraceSubscribe() {
return traceSubscribe;
}

public boolean isMarkErrorRetry() {
return markErrorRetry;
}

@Override
public String toString() {
return "ReactorPluginConfig{" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,20 @@
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
import com.navercorp.pinpoint.bootstrap.interceptor.AsyncContextSpanEventSimpleAroundInterceptor;
import com.navercorp.pinpoint.bootstrap.plugin.reactor.ReactorContextAccessorUtils;
import com.navercorp.pinpoint.common.trace.AnnotationKey;
import com.navercorp.pinpoint.common.util.ArrayArgumentUtils;
import com.navercorp.pinpoint.common.util.StringUtils;
import com.navercorp.pinpoint.plugin.reactor.ReactorConstants;
import com.navercorp.pinpoint.plugin.reactor.ReactorPluginConfig;

public class RetryWhenMainSubscriberInterceptor extends AsyncContextSpanEventSimpleAroundInterceptor {

private final boolean traceRetry;
private final boolean markErrorRetry;

public RetryWhenMainSubscriberInterceptor(TraceContext traceContext, MethodDescriptor methodDescriptor) {
super(traceContext, methodDescriptor);
final ReactorPluginConfig config = new ReactorPluginConfig(traceContext.getProfilerConfig());
this.traceRetry = config.isTraceRetry();
this.markErrorRetry = config.isMarkErrorRetry();
}

public AsyncContext getAsyncContext(Object target, Object[] args) {
Expand All @@ -62,17 +62,10 @@ public void afterTrace(AsyncContext asyncContext, Trace trace, SpanEventRecorder
if (traceRetry && trace.canSampled()) {
recorder.recordApi(methodDescriptor);
recorder.recordServiceType(ReactorConstants.REACTOR);
recorder.recordException(throwable);

final Throwable argThrowable = ArrayArgumentUtils.getArgument(args, 0, Throwable.class);
if (argThrowable != null) {
final String message = argThrowable.getMessage();
if (StringUtils.hasLength(message)) {
final String whenErrorMessage = "RETRY(" + StringUtils.abbreviate(message, 128) + ")";
recorder.recordAttribute(AnnotationKey.ARGS0, whenErrorMessage);
} else {
recorder.recordAttribute(AnnotationKey.ARGS0, "RETRY");
}
recorder.recordException(markErrorRetry, argThrowable);
}
}
}
Expand Down

0 comments on commit 8ad1d2e

Please sign in to comment.