From b67bbd7065946ccc7557b9cd8d1d8f06878d3783 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Tue, 21 Apr 2015 14:33:59 +0000
Subject: [PATCH] improved locking

---
 .../src/net/i2p/router/time/RouterTimestamper.java  | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/router/java/src/net/i2p/router/time/RouterTimestamper.java b/router/java/src/net/i2p/router/time/RouterTimestamper.java
index 3d718d7c4b..4d8892442d 100644
--- a/router/java/src/net/i2p/router/time/RouterTimestamper.java
+++ b/router/java/src/net/i2p/router/time/RouterTimestamper.java
@@ -30,7 +30,7 @@ public class RouterTimestamper extends Timestamper {
     private int _consecutiveFails;
     private volatile boolean _disabled;
     private final boolean _daemon;
-    private boolean _initialized;
+    private volatile boolean _initialized;
     private boolean _wellSynced;
     private volatile boolean _isRunning;
     private Thread _timestamperThread;
@@ -199,10 +199,13 @@ public class RouterTimestamper extends Timestamper {
                     }
                 }
                 
-                boolean wasInitialized = _initialized;
-                if (!wasInitialized)
-                    _initialized = true;
-                synchronized (this) { notifyAll(); }
+                boolean wasInitialized;
+                synchronized (this) {
+                    wasInitialized = _initialized;
+                    if (!wasInitialized)
+                        _initialized = true;
+                    notifyAll();
+                }
                 if (!wasInitialized) {
                     // let the log manager get initialized
                     try { Thread.sleep(10*1000); } catch (InterruptedException ie) {}
-- 
GitLab