Fixes #453: Support tracing exception count for specific entry or context in Tracer
Signed-off-by: Eric Zhao <sczyh16@gmail.com>
This commit is contained in:
parent
8e72211db9
commit
ba4fdcc638
|
|
@ -22,18 +22,30 @@ import com.alibaba.csp.sentinel.node.DefaultNode;
|
||||||
import com.alibaba.csp.sentinel.slots.block.BlockException;
|
import com.alibaba.csp.sentinel.slots.block.BlockException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to record other exception except block exception.
|
* This class is used to record other exceptions except block exception.
|
||||||
*
|
*
|
||||||
* @author jialiang.linjl
|
* @author jialiang.linjl
|
||||||
|
* @author Eric Zhao
|
||||||
*/
|
*/
|
||||||
public final class Tracer {
|
public final class Tracer {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trace provided {@link Throwable} and increment exception count to entry in current context.
|
||||||
|
*
|
||||||
|
* @param e exception to record
|
||||||
|
*/
|
||||||
public static void trace(Throwable e) {
|
public static void trace(Throwable e) {
|
||||||
trace(e, 1);
|
trace(e, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trace provided {@link Throwable} and add exception count to entry in current context.
|
||||||
|
*
|
||||||
|
* @param e exception to record
|
||||||
|
* @param count exception count to add
|
||||||
|
*/
|
||||||
public static void trace(Throwable e, int count) {
|
public static void trace(Throwable e, int count) {
|
||||||
if (e instanceof BlockException) {
|
if (e == null || e instanceof BlockException) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,6 +55,58 @@ public final class Tracer {
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultNode curNode = (DefaultNode)context.getCurNode();
|
DefaultNode curNode = (DefaultNode)context.getCurNode();
|
||||||
|
traceExceptionToNode(e, count, curNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trace provided {@link Throwable} and add exception count to current entry in provided context.
|
||||||
|
*
|
||||||
|
* @param e exception to record
|
||||||
|
* @param count exception count to add
|
||||||
|
* @since 1.4.2
|
||||||
|
*/
|
||||||
|
public static void traceContext(Throwable e, int count, Context context) {
|
||||||
|
if (e == null || e instanceof BlockException) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (context == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultNode curNode = (DefaultNode)context.getCurNode();
|
||||||
|
traceExceptionToNode(e, count, curNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trace provided {@link Throwable} and increment exception count to provided entry.
|
||||||
|
*
|
||||||
|
* @param e exception to record
|
||||||
|
* @since 1.4.2
|
||||||
|
*/
|
||||||
|
public static void traceEntry(Throwable e, Entry entry) {
|
||||||
|
traceEntry(e, 1, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trace provided {@link Throwable} and add exception count to provided entry.
|
||||||
|
*
|
||||||
|
* @param e exception to record
|
||||||
|
* @param count exception count to add
|
||||||
|
* @since 1.4.2
|
||||||
|
*/
|
||||||
|
public static void traceEntry(Throwable e, int count, Entry entry) {
|
||||||
|
if (e == null || e instanceof BlockException) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (entry == null || entry.getCurNode() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultNode curNode = (DefaultNode)entry.getCurNode();
|
||||||
|
traceExceptionToNode(e, count, curNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void traceExceptionToNode(Throwable t, int count, DefaultNode curNode) {
|
||||||
if (curNode == null) {
|
if (curNode == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -52,7 +116,8 @@ public final class Tracer {
|
||||||
if (clusterNode == null) {
|
if (clusterNode == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
clusterNode.trace(e, count);
|
clusterNode.trace(t, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Tracer() {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue