Skip to content

Commit

Permalink
fix: do lazy initialization in a thread-safe way (#10456) (#10461)
Browse files Browse the repository at this point in the history
fixes #9323
  • Loading branch information
Denis authored and vaadin-bot committed Mar 30, 2021
1 parent 441bf7a commit 2ff1566
Showing 1 changed file with 7 additions and 5 deletions.
Expand Up @@ -20,6 +20,7 @@
import java.io.OutputStream;
import java.io.StringWriter;
import java.io.Writer;
import java.util.concurrent.atomic.AtomicReference;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -55,7 +56,7 @@
public class UidlRequestHandler extends SynchronizedRequestHandler
implements SessionExpiredHandler {

private ServerRpcHandler rpcHandler;
private AtomicReference<ServerRpcHandler> rpcHandler = new AtomicReference<>();

@Override
protected boolean canHandleRequest(VaadinRequest request) {
Expand Down Expand Up @@ -151,11 +152,12 @@ public boolean handleSessionExpired(VaadinRequest request,
}

private ServerRpcHandler getRpcHandler(VaadinSession session) {
session.checkHasLock();
if (rpcHandler == null) {
rpcHandler = createRpcHandler();
ServerRpcHandler handler = rpcHandler.get();
if (handler == null) {
rpcHandler.compareAndSet(null, createRpcHandler());
handler = rpcHandler.get();
}
return rpcHandler;
return handler;
}

/**
Expand Down

0 comments on commit 2ff1566

Please sign in to comment.