From a5083691a209217374b26b051d9ab601d54e6ffe Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 21 Jan 2014 21:25:00 +0100 Subject: [PATCH] fixing the fix of the previous commit which still caused and endless recursion --- .../tracking/TrackedRaceWithWindEssentials.java | 14 ++++++++------ .../tracking/impl/DynamicTrackedRaceImpl.java | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRaceWithWindEssentials.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRaceWithWindEssentials.java index 98535a47f4a..1fb856e5d0c 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRaceWithWindEssentials.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRaceWithWindEssentials.java @@ -91,12 +91,6 @@ public abstract class TrackedRaceWithWindEssentials implements TrackedRace { result = createWindTrack(windSource, delayForWindEstimationCacheInvalidation == -1 ? getMillisecondsOverWhichToAverageWind() / 2 : delayForWindEstimationCacheInvalidation); - LockUtil.lockForRead(getSerializationLock()); - try { - windTracks.put(windSource, result); - } finally { - LockUtil.unlockAfterRead(getSerializationLock()); - } } } } @@ -116,6 +110,14 @@ public abstract class TrackedRaceWithWindEssentials implements TrackedRace { protected WindTrack createWindTrack(WindSource windSource, long delayForWindEstimationCacheInvalidation) { WindTrack result = windStore.getWindTrack(trackedRegatta.getRegatta().getName(), this, windSource, millisecondsOverWhichToAverageWind, delayForWindEstimationCacheInvalidation); + synchronized (windTracks) { + LockUtil.lockForRead(getSerializationLock()); + try { + windTracks.put(windSource, result); + } finally { + LockUtil.unlockAfterRead(getSerializationLock()); + } + } return result; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java index d6e3577502d..db430042c31 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java @@ -623,8 +623,8 @@ DynamicTrackedRace, GPSTrackListener { * wind fixes that may have been loaded from the wind store for the new track. */ @Override - public WindTrack getOrCreateWindTrack(WindSource windSource) { - WindTrack result = super.getOrCreateWindTrack(windSource); + protected WindTrack createWindTrack(WindSource windSource, long delayForWindEstimationCacheInvalidation) { + WindTrack result = super.createWindTrack(windSource, delayForWindEstimationCacheInvalidation); if (windSource.getType().canBeStored()) { // replicate all wind fixes that may have been loaded by the wind store result.lockForRead();