in dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/CircuitBreakerFilter.java [116:148]
private ResourceStat createInstanceResourceStat(Invoker<?> invoker, Invocation invocation,
InvokeContext.ResponseContext context, long delay) {
URL url = invoker.getUrl();
Throwable exception = context.getError();
RetStatus retStatus = RetStatus.RetSuccess;
int code = 0;
if (null != exception) {
retStatus = RetStatus.RetFail;
if (exception instanceof RpcException) {
RpcException rpcException = (RpcException) exception;
code = rpcException.getCode();
if (StringUtils.isNotBlank(rpcException.getMessage()) && rpcException.getMessage()
.contains(PolarisBlockException.PREFIX)) {
// 限流异常不进行熔断
retStatus = RetStatus.RetFlowControl;
}
if (rpcException.isTimeout()) {
retStatus = RetStatus.RetTimeout;
}
} else {
code = -1;
}
}
ServiceKey calleeServiceKey = createCalleeService(invoker);
Resource resource = new InstanceResource(
calleeServiceKey,
url.getHost(),
url.getPort(),
new ServiceKey()
);
return new ResourceStat(resource, code, delay, retStatus);
}