Cleaner way to skip netty executor's tasks
This commit is contained in:
parent
68e52497d6
commit
8ff985afdb
|
@ -26,11 +26,24 @@ public class ExecutorInstrumentationUtils {
|
||||||
* @return true iff given task object should be wrapped
|
* @return true iff given task object should be wrapped
|
||||||
*/
|
*/
|
||||||
public static boolean shouldAttachStateToTask(final Object task, final Executor executor) {
|
public static boolean shouldAttachStateToTask(final Object task, final Executor executor) {
|
||||||
|
if (task == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
final TraceScope scope = activeScope();
|
final TraceScope scope = activeScope();
|
||||||
return (scope != null
|
final Class enclosingClass = task.getClass().getEnclosingClass();
|
||||||
|
|
||||||
|
return scope != null
|
||||||
&& scope.isAsyncPropagating()
|
&& scope.isAsyncPropagating()
|
||||||
&& task != null
|
&& !ExecutorInstrumentationUtils.isExecutorDisabledForThisTask(executor, task)
|
||||||
&& !ExecutorInstrumentationUtils.isExecutorDisabledForThisTask(executor, task));
|
|
||||||
|
// Don't instrument the executor's own runnables. These runnables may never return until
|
||||||
|
// netty shuts down. Any created continuations will be open until that time preventing
|
||||||
|
// traces from being reported
|
||||||
|
&& (enclosingClass == null
|
||||||
|
|| !enclosingClass
|
||||||
|
.getName()
|
||||||
|
.equals("io.netty.util.concurrent.SingleThreadEventExecutor"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -47,20 +60,13 @@ public class ExecutorInstrumentationUtils {
|
||||||
|
|
||||||
final State state = contextStore.putIfAbsent(task, State.FACTORY);
|
final State state = contextStore.putIfAbsent(task, State.FACTORY);
|
||||||
|
|
||||||
// Don't instrument the executor's own runnables. These runnables may never return until
|
final TraceScope.Continuation continuation = scope.capture();
|
||||||
// netty shuts down. Any created continuations will be open until that time preventing traces
|
if (state.setContinuation(continuation)) {
|
||||||
// from being reported
|
log.debug("created continuation {} from scope {}, state: {}", continuation, scope, state);
|
||||||
if (!task.getClass()
|
} else {
|
||||||
.getName()
|
continuation.close(false);
|
||||||
.startsWith("io.netty.util.concurrent.SingleThreadEventExecutor$")) {
|
|
||||||
|
|
||||||
final TraceScope.Continuation continuation = scope.capture();
|
|
||||||
if (state.setContinuation(continuation)) {
|
|
||||||
log.debug("created continuation {} from scope {}, state: {}", continuation, scope, state);
|
|
||||||
} else {
|
|
||||||
continuation.close(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue