Skip to content

Commit 2d9860c

Browse files
authored
fix NPE issue (#684)
* fix NPE issue * double check synchronized block * name the lock for specific use
1 parent 0c21a91 commit 2d9860c

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/main/java/com/microsoft/azure/functions/worker/broker/JavaFunctionBroker.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import java.net.URL;
77
import java.util.*;
88
import java.util.concurrent.ConcurrentHashMap;
9-
import java.util.concurrent.atomic.AtomicBoolean;
10-
import java.util.logging.Level;
119

1210
import com.microsoft.azure.functions.internal.spi.middleware.Middleware;
1311
import com.microsoft.azure.functions.rpc.messages.*;
@@ -35,9 +33,10 @@ public class JavaFunctionBroker {
3533
private final Map<String, ImmutablePair<String, FunctionDefinition>> methods;
3634
private final ClassLoaderProvider classLoaderProvider;
3735
private String workerDirectory;
38-
private final AtomicBoolean oneTimeLogicInitialized = new AtomicBoolean(false);
36+
private volatile boolean oneTimeLogicInitialized = false;
3937
private volatile InvocationChainFactory invocationChainFactory;
4038
private volatile FunctionInstanceInjector functionInstanceInjector;
39+
private final Object oneTimeLogicInitializationLock = new Object();
4140

4241
private FunctionInstanceInjector newInstanceInjector() {
4342
return new FunctionInstanceInjector() {
@@ -63,9 +62,14 @@ public void loadMethod(FunctionMethodDescriptor descriptor, Map<String, BindingI
6362
}
6463

6564
private void initializeOneTimeLogics() {
66-
if (!oneTimeLogicInitialized.getAndSet(true)) {
67-
initializeInvocationChainFactory();
68-
initializeFunctionInstanceInjector();
65+
if (!oneTimeLogicInitialized) {
66+
synchronized (oneTimeLogicInitializationLock) {
67+
if (!oneTimeLogicInitialized) {
68+
initializeInvocationChainFactory();
69+
initializeFunctionInstanceInjector();
70+
oneTimeLogicInitialized = true;
71+
}
72+
}
6973
}
7074
}
7175

0 commit comments

Comments
 (0)