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 5227c2cb692..ae2fee67cc1 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 @@ -140,6 +140,11 @@ DynamicTrackedRace, GPSTrackListener { private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); raceStateBasedStartTimeChangedListener = createRaceStateStartTimeChangeListener(); + // the race states are transient, therefore not serialized; they are re-constructed here when asked for; + // the transient raceStateBasedStartTimeChangedListener is re-added here, like it was in attachRaceLog(...) + for (final RaceLog raceLog : attachedRaceLogs.values()) { + getRaceState(raceLog).addChangedListener(raceStateBasedStartTimeChangedListener); + } listeners = new HashSet(); logListener = new DynamicTrackedRaceLogListener(this); courseDesignChangedListeners = new HashSet<>(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 43f0001d3ef..9d8ad67a060 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -905,7 +905,7 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl * and not {@link Object}. */ private final String updateStartOfRaceCacheFieldsMonitor = ""; - protected void updateStartOfRaceCacheFields() { + protected void updateStartOfRaceCacheFields() { synchronized (updateStartOfRaceCacheFieldsMonitor) { TimePoint newStartTime = null; TimePoint newStartTimeWithoutInferenceFromStartMarkPassings = null;