fix: fix npe when add circuitbreak module without feign.hystrix.enable=true

pull/1292/head
andrew shan 1 year ago
parent e4577ea9ea
commit 3bc8051674

@ -113,36 +113,41 @@ public class PolarisFeignCircuitBreakerInvocationHandler implements InvocationHa
else if ("toString".equals(method.getName())) { else if ("toString".equals(method.getName())) {
return toString(); return toString();
} }
String circuitName = circuitBreakerNameResolver.resolveCircuitBreakerName(feignClientName, target, method);
CircuitBreaker circuitBreaker = factory.create(circuitName);
Supplier<Object> supplier = asSupplier(method, args); Supplier<Object> supplier = asSupplier(method, args);
Function<Throwable, Object> fallbackFunction; if (circuitBreakerNameResolver != null) {
if (this.nullableFallbackFactory != null) { String circuitName = circuitBreakerNameResolver.resolveCircuitBreakerName(feignClientName, target, method);
fallbackFunction = throwable -> { CircuitBreaker circuitBreaker = factory.create(circuitName);
Object fallback = this.nullableFallbackFactory.create(throwable);
try { Function<Throwable, Object> fallbackFunction;
return this.fallbackMethodMap.get(method).invoke(fallback, args); if (this.nullableFallbackFactory != null) {
} fallbackFunction = throwable -> {
catch (Exception exception) { Object fallback = this.nullableFallbackFactory.create(throwable);
unwrapAndRethrow(exception); try {
} return this.fallbackMethodMap.get(method).invoke(fallback, args);
return null; }
}; catch (Exception exception) {
unwrapAndRethrow(exception);
}
return null;
};
}
else {
fallbackFunction = throwable -> {
PolarisCircuitBreakerFallbackFactory.DefaultFallback fallback =
(PolarisCircuitBreakerFallbackFactory.DefaultFallback) new PolarisCircuitBreakerFallbackFactory(this.decoder).create(throwable);
return fallback.fallback(method);
};
}
try {
return circuitBreaker.run(supplier, fallbackFunction);
}
catch (FallbackWrapperException e) {
// unwrap And Rethrow
throw e.getCause();
}
} }
else { else {
fallbackFunction = throwable -> { return supplier.get();
PolarisCircuitBreakerFallbackFactory.DefaultFallback fallback =
(PolarisCircuitBreakerFallbackFactory.DefaultFallback) new PolarisCircuitBreakerFallbackFactory(this.decoder).create(throwable);
return fallback.fallback(method);
};
}
try {
return circuitBreaker.run(supplier, fallbackFunction);
}
catch (FallbackWrapperException e) {
// unwrap And Rethrow
throw e.getCause();
} }
} }

Loading…
Cancel
Save