GH-425 Fix Azure function reinitialization
Fixed Azure function reinitialization on each request Resolves #425
This commit is contained in:
@@ -36,6 +36,10 @@ import org.springframework.cloud.function.context.AbstractSpringFunctionAdapterI
|
|||||||
*/
|
*/
|
||||||
public class AzureSpringBootRequestHandler<I, O> extends AbstractSpringFunctionAdapterInitializer<ExecutionContext> {
|
public class AzureSpringBootRequestHandler<I, O> extends AbstractSpringFunctionAdapterInitializer<ExecutionContext> {
|
||||||
|
|
||||||
|
private static boolean initialized;
|
||||||
|
|
||||||
|
private static AzureSpringBootRequestHandler thisInitializer;
|
||||||
|
|
||||||
public AzureSpringBootRequestHandler(Class<?> configurationClass) {
|
public AzureSpringBootRequestHandler(Class<?> configurationClass) {
|
||||||
super(configurationClass);
|
super(configurationClass);
|
||||||
}
|
}
|
||||||
@@ -48,6 +52,12 @@ public class AzureSpringBootRequestHandler<I, O> extends AbstractSpringFunctionA
|
|||||||
return this.handleRequest(null, context);
|
return this.handleRequest(null, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
initialized = false;
|
||||||
|
super.close();
|
||||||
|
}
|
||||||
|
|
||||||
public O handleRequest(I input, ExecutionContext context) {
|
public O handleRequest(I input, ExecutionContext context) {
|
||||||
String name = null;
|
String name = null;
|
||||||
try {
|
try {
|
||||||
@@ -55,11 +65,16 @@ public class AzureSpringBootRequestHandler<I, O> extends AbstractSpringFunctionA
|
|||||||
name = context.getFunctionName();
|
name = context.getFunctionName();
|
||||||
context.getLogger().info("Handler processing a request for: " + name);
|
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<?> events = input == null ? Mono.empty() : extract(convertEvent(input));
|
||||||
|
|
||||||
Publisher<?> output = apply(events);
|
Publisher<?> output = thisInitializer.apply(events);
|
||||||
return result(input, output);
|
return result(input, output);
|
||||||
}
|
}
|
||||||
catch (Throwable ex) {
|
catch (Throwable ex) {
|
||||||
|
|||||||
Reference in New Issue
Block a user