From a907bd547b4a28db827dab73c04bd82331145785 Mon Sep 17 00:00:00 2001 From: Olga Semernitskaia Date: Wed, 20 Sep 2023 12:32:21 +0300 Subject: [PATCH] add executor service param - fixes after review --- .../riptide/failsafe/FailsafePlugin.java | 2 +- .../DefaultRiptideRegistrar.java | 41 ++++++------------- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/riptide-failsafe/src/main/java/org/zalando/riptide/failsafe/FailsafePlugin.java b/riptide-failsafe/src/main/java/org/zalando/riptide/failsafe/FailsafePlugin.java index 2c2facaeb..22df68f4c 100644 --- a/riptide-failsafe/src/main/java/org/zalando/riptide/failsafe/FailsafePlugin.java +++ b/riptide-failsafe/src/main/java/org/zalando/riptide/failsafe/FailsafePlugin.java @@ -55,7 +55,7 @@ public FailsafePlugin withPolicy(final RequestPolicy policy) { public FailsafePlugin withExecutor(@Nullable final ExecutorService executorService) { if (executorService instanceof ThreadPoolExecutor && ((ThreadPoolExecutor) executorService).getCorePoolSize() == 1) { - log.warn("The executorService should have a core pool size or parallelism of at least 2 in order for timeouts to work, " + + log.warn("The custom executorService should have a core pool size or parallelism of at least 2 in order for timeouts to work, " + "see dev.failsafe.Failsafe documentation for more details"); } return new FailsafePlugin(policies, decorators, executorService); diff --git a/riptide-spring-boot-autoconfigure/src/main/java/org/zalando/riptide/autoconfigure/DefaultRiptideRegistrar.java b/riptide-spring-boot-autoconfigure/src/main/java/org/zalando/riptide/autoconfigure/DefaultRiptideRegistrar.java index 79d5b313e..4d1e71781 100644 --- a/riptide-spring-boot-autoconfigure/src/main/java/org/zalando/riptide/autoconfigure/DefaultRiptideRegistrar.java +++ b/riptide-spring-boot-autoconfigure/src/main/java/org/zalando/riptide/autoconfigure/DefaultRiptideRegistrar.java @@ -408,18 +408,14 @@ private Optional registerCircuitBreakerFailsafePlugin(final String id, f final String pluginId = registry.registerIfAbsent(name(id, CircuitBreaker.class, FailsafePlugin.class), () -> { var executorService = registry.find(name(id, "CircuitBreaker", ExecutorService.class)); + var executorServiceRef = executorService.map(Registry::ref).orElse(null); log.debug("Client [{}]: Registering [CircuitBreakerFailsafePlugin]", id); - return executorService.map(executorServiceBeanName -> genericBeanDefinition(FailsafePluginFactory.class) + return genericBeanDefinition(FailsafePluginFactory.class) .setFactoryMethod("createCircuitBreakerPlugin") .addConstructorArgValue(registerCircuitBreaker(id, client)) .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(ref(executorServiceBeanName))) - .orElseGet(() -> genericBeanDefinition(FailsafePluginFactory.class) - .setFactoryMethod("createCircuitBreakerPlugin") - .addConstructorArgValue(registerCircuitBreaker(id, client)) - .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(null)); + .addConstructorArgValue(executorServiceRef); }); return Optional.of(pluginId); } @@ -430,18 +426,14 @@ private Optional registerRetryPolicyFailsafePlugin(final String id, fina if (client.getRetry().getEnabled()) { final String pluginId = registry.registerIfAbsent(name(id, "RetryPolicy", FailsafePlugin.class), () -> { var executorService = registry.find(name(id, "RetryPolicy", ExecutorService.class)); + var executorServiceRef = executorService.map(Registry::ref).orElse(null); log.debug("Client [{}]: Registering [RetryPolicyFailsafePlugin]", id); - return executorService.map(executorServiceBeanName -> genericBeanDefinition(FailsafePluginFactory.class) + return genericBeanDefinition(FailsafePluginFactory.class) .setFactoryMethod("createRetryFailsafePlugin") .addConstructorArgValue(client) .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(ref(executorServiceBeanName))) - .orElseGet(() -> genericBeanDefinition(FailsafePluginFactory.class) - .setFactoryMethod("createRetryFailsafePlugin") - .addConstructorArgValue(client) - .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(null)); + .addConstructorArgValue(executorServiceRef); }); return Optional.of(pluginId); } @@ -465,17 +457,14 @@ private Optional registerBackupRequestFailsafePlugin(final String id, fi final String pluginId = registry.registerIfAbsent(name(id, BackupRequest.class, FailsafePlugin.class), () -> { var executorService = registry.find(name(id, "BackupRequest", ExecutorService.class)); + var executorServiceRef = executorService.map(Registry::ref).orElse(null); + log.debug("Client [{}]: Registering [BackupRequestFailsafePlugin]", id); - return executorService.map(executorServiceBeanName -> genericBeanDefinition(FailsafePluginFactory.class) + return genericBeanDefinition(FailsafePluginFactory.class) .setFactoryMethod("createBackupRequestPlugin") .addConstructorArgValue(client) .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(ref(executorServiceBeanName))) - .orElseGet(() -> genericBeanDefinition(FailsafePluginFactory.class) - .setFactoryMethod("createBackupRequestPlugin") - .addConstructorArgValue(client) - .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(null)); + .addConstructorArgValue(executorServiceRef); }); return Optional.of(pluginId); } @@ -486,18 +475,14 @@ private Optional registerTimeoutFailsafePlugin(final String id, final Cl if (client.getTimeouts().getEnabled()) { final String pluginId = registry.registerIfAbsent(name(id, Timeout.class, FailsafePlugin.class), () -> { var executorService = registry.find(name(id, "Timeout", ExecutorService.class)); + var executorServiceRef = executorService.map(Registry::ref).orElse(null); log.debug("Client [{}]: Registering [TimeoutFailsafePlugin]", id); - return executorService.map(executorServiceBeanName -> genericBeanDefinition(FailsafePluginFactory.class) - .setFactoryMethod("createTimeoutPlugin") - .addConstructorArgValue(client) - .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(ref(executorServiceBeanName))) - .orElseGet(() -> genericBeanDefinition(FailsafePluginFactory.class) + return genericBeanDefinition(FailsafePluginFactory.class) .setFactoryMethod("createTimeoutPlugin") .addConstructorArgValue(client) .addConstructorArgValue(createTaskDecorators(id, client)) - .addConstructorArgValue(null)); + .addConstructorArgValue(executorServiceRef); }); return Optional.of(pluginId); }