private ResourceStat createInstanceResourceStat()

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);
    }