Add exceptionsToTrace configuration support in @SentinelResource annotation (#543)
This commit is contained in:
parent
468327bdcd
commit
6e1dfb374c
|
|
@ -15,14 +15,10 @@
|
||||||
*/
|
*/
|
||||||
package com.alibaba.csp.sentinel.annotation;
|
package com.alibaba.csp.sentinel.annotation;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Inherited;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.EntryType;
|
import com.alibaba.csp.sentinel.EntryType;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The annotation indicates a definition of Sentinel resource.
|
* The annotation indicates a definition of Sentinel resource.
|
||||||
*
|
*
|
||||||
|
|
@ -63,4 +59,9 @@ public @interface SentinelResource {
|
||||||
* @return name of the fallback function, empty by default
|
* @return name of the fallback function, empty by default
|
||||||
*/
|
*/
|
||||||
String fallback() default "";
|
String fallback() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the exception classes to trace, Throwable.class by default
|
||||||
|
*/
|
||||||
|
Class<? extends Throwable>[] exceptionsToTrace() default {Throwable.class};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,9 @@ public class SentinelResourceAspect extends AbstractSentinelAspectSupport {
|
||||||
} catch (BlockException ex) {
|
} catch (BlockException ex) {
|
||||||
return handleBlockException(pjp, annotation, ex);
|
return handleBlockException(pjp, annotation, ex);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
|
if (isTrackedException(ex, annotation.exceptionsToTrace())) {
|
||||||
Tracer.trace(ex);
|
Tracer.trace(ex);
|
||||||
|
}
|
||||||
throw ex;
|
throw ex;
|
||||||
} finally {
|
} finally {
|
||||||
if (entry != null) {
|
if (entry != null) {
|
||||||
|
|
@ -67,4 +69,23 @@ public class SentinelResourceAspect extends AbstractSentinelAspectSupport {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* whether the exception is in tracked list of exception classes
|
||||||
|
*
|
||||||
|
* @param ex
|
||||||
|
* @param exceptionsToTrace
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isTrackedException(Throwable ex, Class<? extends Throwable>[] exceptionsToTrace) {
|
||||||
|
if (exceptionsToTrace == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (Class exceptionToTrace : exceptionsToTrace) {
|
||||||
|
if (exceptionToTrace.isAssignableFrom(ex.getClass())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue