protected SystemHiddenTask(String name) { super(name); _shallowTraceBuilder.setSystemHidden(true); } }
public void createSurrogate() { if (_surrogate == null) { _surrogate = new ShallowTraceBuilder(IdGenerator.getNextId()); _surrogate.setName(_desc); ShallowTraceBuilder parentShallowTraceBuilder = _parent.getShallowTraceBuilder(); _surrogate.setHidden(parentShallowTraceBuilder.getHidden()); _surrogate.setSystemHidden(parentShallowTraceBuilder.getSystemHidden()); parentShallowTraceBuilder.setName("fused").setSystemHidden(true); } } }
nested.getShallowTraceBuilder().setSystemHidden(true); return flatten(desc, nested);
@Override protected void executeBatchWithContext(final G group, final Batch<K, T> batch, final Context ctx) { Task<Map<K, Try<T>>> task = taskForBatch(group, batch.keys()); Task<Map<K, Try<T>>> completing = task.andThen("completePromises", map -> { batch.foreach((key, promise) -> { Try<T> result = map.get(key); if (result != null) { if (result.isFailed()) { promise.fail(result.getError()); } else { promise.done(result.get()); } } else { promise.fail(new Exception("Result for key: " + key + " not found in batch response")); } }); }); completing.getShallowTraceBuilder().setSystemHidden(true); Task<Map<K, Try<T>>> withFailureHandling = completing.onFailure("handleFailures", t -> { batch.failAll(t); }); withFailureHandling.getShallowTraceBuilder().setSystemHidden(true); ctx.run(withFailureHandling); }
shallowBuilder.setSystemHidden(getBooleanField(traceNode, JsonTraceCodec.TRACE_SYSTEM_HIDDEN));
public ShallowTraceBuilder(final ShallowTrace shallowTrace) { this(shallowTrace.getId()); setResultType(shallowTrace.getResultType()); setName(shallowTrace.getName()); setValue(shallowTrace.getValue()); setStartNanos(shallowTrace.getStartNanos()); setPendingNanos(shallowTrace.getPendingNanos()); setEndNanos(shallowTrace.getEndNanos()); setHidden(shallowTrace.getHidden()); setSystemHidden(shallowTrace.getSystemHidden()); Map<String, String> attributes = shallowTrace.getAttributes(); if (!attributes.isEmpty()) { _attributes = new HashMap<String, String>(); _attributes.putAll(attributes); } setTaskType(shallowTrace.getTaskType()); }
@Override protected Promise<? extends T> run(final Context context) throws Throwable { final SettablePromise<T> result = Promises.settable(); String baseName = getName(); if (_asyncTask == null) { /* There is no async predecessor, run propagation immediately */ FusionTraceContext traceContext = new FusionTraceContext(context, FusionTask.this.getShallowTraceBuilder(), baseName); propagate(traceContext, result); } else { /* There is async predecessor, need to run it first PropagationTask will actually run propagation */ final Task<T> propagationTask = Task.async(baseName, ctx -> { final SettablePromise<T> fusionResult = Promises.settable(); FusionTraceContext traceContext = new FusionTraceContext(ctx, FusionTask.this.getShallowTraceBuilder(), baseName); propagate(traceContext, fusionResult); return fusionResult; }); propagationTask.getShallowTraceBuilder() .setHidden(_shallowTraceBuilder.getHidden()) .setSystemHidden(_shallowTraceBuilder.getSystemHidden()); _shallowTraceBuilder.setName("async fused"); _shallowTraceBuilder.setSystemHidden(true); context.after(_asyncTask).run(propagationTask); context.run(_asyncTask); Promises.propagateResult(propagationTask, result); } return result; } }
ctx.getShallowTraceBuilder().setSystemHidden(true);
/** Create a wrapped task with associated recovery task that will retry if necessary. */ private Task<T> wrap(int attempt) { Task<T> retryTask = Task.async(_policy.getName() + ", attempt " + attempt, context -> { final SettablePromise<T> result = Promises.settable(); Task<T> task = _taskFunction.apply(attempt); final Task<T> recovery = Task.async(_name + " recovery", recoveryContext -> { final SettablePromise<T> recoveryResult = Promises.settable(); if (task.isFailed()) { // Failed task will cause retry to be scheduled. ErrorClassification errorClassification = _policy.getErrorClassifier().apply(task.getError()); retry(attempt + 1, task.getError(), errorClassification, recoveryContext, recoveryResult); } else { recoveryResult.done(task.get()); } return recoveryResult; }); // Recovery task should run immediately after the original task to process its error. recovery.setPriority(Priority.MAX_PRIORITY); recovery.getShallowTraceBuilder().setSystemHidden(true); Promises.propagateResult(recovery, result); context.after(task).run(recovery); context.run(task); return result; }); retryTask.getShallowTraceBuilder().setTaskType(TaskType.RETRY.getName()); return retryTask; }
recovery.getShallowTraceBuilder().setSystemHidden(true); recovery.getShallowTraceBuilder().setTaskType(TaskType.RECOVER.getName()); Promises.propagateResult(recovery, result);
protected SystemHiddenTask(String name) { super(name); _shallowTraceBuilder.setSystemHidden(true); } }
public void createSurrogate() { if (_surrogate == null) { _surrogate = new ShallowTraceBuilder(IdGenerator.getNextId()); _surrogate.setName(_desc); ShallowTraceBuilder parentShallowTraceBuilder = _parent.getShallowTraceBuilder(); _surrogate.setHidden(parentShallowTraceBuilder.getHidden()); _surrogate.setSystemHidden(parentShallowTraceBuilder.getSystemHidden()); parentShallowTraceBuilder.setName("fused").setSystemHidden(true); } } }
nested.getShallowTraceBuilder().setSystemHidden(true); return flatten(desc, nested);
@Override protected void executeBatchWithContext(final G group, final Batch<K, T> batch, final Context ctx) { Task<Map<K, Try<T>>> task = taskForBatch(group, batch.keys()); Task<Map<K, Try<T>>> completing = task.andThen("completePromises", map -> { batch.foreach((key, promise) -> { Try<T> result = map.get(key); if (result != null) { if (result.isFailed()) { promise.fail(result.getError()); } else { promise.done(result.get()); } } else { promise.fail(new Exception("Result for key: " + key + " not found in batch response")); } }); }); completing.getShallowTraceBuilder().setSystemHidden(true); Task<Map<K, Try<T>>> withFailureHandling = completing.onFailure("handleFailures", t -> { batch.failAll(t); }); withFailureHandling.getShallowTraceBuilder().setSystemHidden(true); ctx.run(withFailureHandling); }
shallowBuilder.setSystemHidden(getBooleanField(traceNode, JsonTraceCodec.TRACE_SYSTEM_HIDDEN));
public ShallowTraceBuilder(final ShallowTrace shallowTrace) { this(shallowTrace.getId()); setResultType(shallowTrace.getResultType()); setName(shallowTrace.getName()); setValue(shallowTrace.getValue()); setStartNanos(shallowTrace.getStartNanos()); setPendingNanos(shallowTrace.getPendingNanos()); setEndNanos(shallowTrace.getEndNanos()); setHidden(shallowTrace.getHidden()); setSystemHidden(shallowTrace.getSystemHidden()); Map<String, String> attributes = shallowTrace.getAttributes(); if (!attributes.isEmpty()) { _attributes = new HashMap<String, String>(); _attributes.putAll(attributes); } setTaskType(shallowTrace.getTaskType()); }
@Override protected Promise<? extends T> run(final Context context) throws Throwable { final SettablePromise<T> result = Promises.settable(); String baseName = getName(); if (_asyncTask == null) { /* There is no async predecessor, run propagation immediately */ FusionTraceContext traceContext = new FusionTraceContext(context, FusionTask.this.getShallowTraceBuilder(), baseName); propagate(traceContext, result); } else { /* There is async predecessor, need to run it first PropagationTask will actually run propagation */ final Task<T> propagationTask = Task.async(baseName, ctx -> { final SettablePromise<T> fusionResult = Promises.settable(); FusionTraceContext traceContext = new FusionTraceContext(ctx, FusionTask.this.getShallowTraceBuilder(), baseName); propagate(traceContext, fusionResult); return fusionResult; }); propagationTask.getShallowTraceBuilder() .setHidden(_shallowTraceBuilder.getHidden()) .setSystemHidden(_shallowTraceBuilder.getSystemHidden()); _shallowTraceBuilder.setName("async fused"); _shallowTraceBuilder.setSystemHidden(true); context.after(_asyncTask).run(propagationTask); context.run(_asyncTask); Promises.propagateResult(propagationTask, result); } return result; } }
ctx.getShallowTraceBuilder().setSystemHidden(true);
/** Create a wrapped task with associated recovery task that will retry if necessary. */ private Task<T> wrap(int attempt) { Task<T> retryTask = Task.async(_policy.getName() + ", attempt " + attempt, context -> { final SettablePromise<T> result = Promises.settable(); Task<T> task = _taskFunction.apply(attempt); final Task<T> recovery = Task.async(_name + " recovery", recoveryContext -> { final SettablePromise<T> recoveryResult = Promises.settable(); if (task.isFailed()) { // Failed task will cause retry to be scheduled. ErrorClassification errorClassification = _policy.getErrorClassifier().apply(task.getError()); retry(attempt + 1, task.getError(), errorClassification, recoveryContext, recoveryResult); } else { recoveryResult.done(task.get()); } return recoveryResult; }); // Recovery task should run immediately after the original task to process its error. recovery.setPriority(Priority.MAX_PRIORITY); recovery.getShallowTraceBuilder().setSystemHidden(true); Promises.propagateResult(recovery, result); context.after(task).run(recovery); context.run(task); return result; }); retryTask.getShallowTraceBuilder().setTaskType(TaskType.RETRY.getName()); return retryTask; }
recovery.getShallowTraceBuilder().setSystemHidden(true); recovery.getShallowTraceBuilder().setTaskType(TaskType.RECOVER.getName()); Promises.propagateResult(recovery, result);