From de9d968b763cb25cde305a2e8688e3751a47c611 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 27 Mar 2019 12:32:23 +0000 Subject: [PATCH] DatabaseEntry: Change from volatile to synched --- core/java/src/net/i2p/data/DatabaseEntry.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/core/java/src/net/i2p/data/DatabaseEntry.java b/core/java/src/net/i2p/data/DatabaseEntry.java index 7a3fadd97c..77638daa0a 100644 --- a/core/java/src/net/i2p/data/DatabaseEntry.java +++ b/core/java/src/net/i2p/data/DatabaseEntry.java @@ -59,8 +59,9 @@ public abstract class DatabaseEntry extends DataStructureImpl { public final static int KEY_TYPE_SERVICE_LIST = 11; protected volatile Signature _signature; - protected volatile Hash _currentRoutingKey; - protected volatile long _routingKeyGenMod; + // synch: this + private Hash _currentRoutingKey; + private long _routingKeyGenMod; /** * A common interface to the timestamp of the two subclasses. @@ -153,11 +154,13 @@ public abstract class DatabaseEntry extends DataStructureImpl { throw new IllegalStateException("Not in router context"); RoutingKeyGenerator gen = ctx.routingKeyGenerator(); long mod = gen.getLastChanged(); - if (mod != _routingKeyGenMod) { - _currentRoutingKey = gen.getRoutingKey(getHash()); - _routingKeyGenMod = mod; + synchronized(this) { + if (mod != _routingKeyGenMod) { + _currentRoutingKey = gen.getRoutingKey(getHash()); + _routingKeyGenMod = mod; + } + return _currentRoutingKey; } - return _currentRoutingKey; } /** -- GitLab