From 7e0e8ff7ee7e7c831e3111f0b1e4b0cf9409beb8 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 16 Dec 2019 19:47:46 +0100 Subject: [PATCH] GH-425 Fix Azure function reinitialization Fixed Azure function reinitialization on each request Resolves #425 --- .../azure/AzureSpringBootRequestHandler.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java index 91dc05814..ebd8f2ea2 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure/src/main/java/org/springframework/cloud/function/adapter/azure/AzureSpringBootRequestHandler.java @@ -36,6 +36,10 @@ import org.springframework.cloud.function.context.AbstractSpringFunctionAdapterI */ public class AzureSpringBootRequestHandler extends AbstractSpringFunctionAdapterInitializer { + private static boolean initialized; + + private static AzureSpringBootRequestHandler thisInitializer; + public AzureSpringBootRequestHandler(Class configurationClass) { super(configurationClass); } @@ -48,6 +52,12 @@ public class AzureSpringBootRequestHandler extends AbstractSpringFunctionA return this.handleRequest(null, context); } + @Override + public void close() { + initialized = false; + super.close(); + } + public O handleRequest(I input, ExecutionContext context) { String name = null; try { @@ -55,11 +65,16 @@ public class AzureSpringBootRequestHandler extends AbstractSpringFunctionA name = context.getFunctionName(); context.getLogger().info("Handler processing a request for: " + name); } - initialize(context); + if (!initialized) { + initialize(context); + initialized = true; + thisInitializer = this; + } + Publisher events = input == null ? Mono.empty() : extract(convertEvent(input)); - Publisher output = apply(events); + Publisher output = thisInitializer.apply(events); return result(input, output); } catch (Throwable ex) {