From 7c2000c8ac78a8b0b916b01c931a489d683efed0 Mon Sep 17 00:00:00 2001 From: Joao Viegas Date: Mon, 20 Feb 2023 21:08:34 +0100 Subject: [PATCH] update key manager in synchronized block to guarantee that the last triggered event is the one finally updating the key manager --- .../FileWatchingX509ExtendedKeyManager.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/cloudfoundry/security/FileWatchingX509ExtendedKeyManager.java b/src/main/java/org/cloudfoundry/security/FileWatchingX509ExtendedKeyManager.java index b931975..f05ff1d 100644 --- a/src/main/java/org/cloudfoundry/security/FileWatchingX509ExtendedKeyManager.java +++ b/src/main/java/org/cloudfoundry/security/FileWatchingX509ExtendedKeyManager.java @@ -136,12 +136,14 @@ private final class FileWatcherCallback implements Runnable { @Override public void run() { - if (FileWatchingX509ExtendedKeyManager.this.keyManager.getAndSet(getKeyManager(getKeyStore())) == null) { - FileWatchingX509ExtendedKeyManager.this.logger.info(String.format("Initialized KeyManager for %s and %s", FileWatchingX509ExtendedKeyManager.this.privateKey, - FileWatchingX509ExtendedKeyManager.this.certificates)); - } else { - FileWatchingX509ExtendedKeyManager.this.logger.info(String.format("Updated KeyManager for %s and %s", FileWatchingX509ExtendedKeyManager.this.privateKey, - FileWatchingX509ExtendedKeyManager.this.certificates)); + synchronized (FileWatchingX509ExtendedKeyManager.this.keyManager) { + if (FileWatchingX509ExtendedKeyManager.this.keyManager.getAndSet(getKeyManager(getKeyStore())) == null) { + FileWatchingX509ExtendedKeyManager.this.logger.info(String.format("Initialized KeyManager for %s and %s", FileWatchingX509ExtendedKeyManager.this.privateKey, + FileWatchingX509ExtendedKeyManager.this.certificates)); + } else { + FileWatchingX509ExtendedKeyManager.this.logger.info(String.format("Updated KeyManager for %s and %s", FileWatchingX509ExtendedKeyManager.this.privateKey, + FileWatchingX509ExtendedKeyManager.this.certificates)); + } } }