mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 09:26:44 +00:00
Fix for Bugzilla Bug 53 - Negative effects of caching race list in SwissTimingAdapterPersistenceImpl?
This commit is contained in:
+12
-3
@@ -27,6 +27,9 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
|
||||
|
||||
private static final Logger logger = Logger.getLogger(SwissTimingAdapterPersistenceImpl.class.getName());
|
||||
|
||||
/** this race cache should only be used for checks in the storeSailMasterMessage method to ensure
|
||||
* that we have always a valid race for a message (also in case we missed a RAC message)
|
||||
*/
|
||||
private HashMap<String, Race> cachedRaces = new HashMap<String, Race>();
|
||||
|
||||
public SwissTimingAdapterPersistenceImpl(DB db, SwissTimingFactory swissTimingFactory) {
|
||||
@@ -210,9 +213,15 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
|
||||
// in order to have a more intelligent conflict resolver mechanism we will forward the resolution to a special thread later on
|
||||
boolean simpleResolution = true;
|
||||
if(simpleResolution) {
|
||||
Race newRace = SwissTimingFactory.INSTANCE.createRace(message.getRaceID(), null, null);
|
||||
storeRace(newRace);
|
||||
cachedRaces.put(newRace.getRaceID(), newRace);
|
||||
// first check if the missing race has been created in the mean time
|
||||
Race checkRace = getRace(message.getRaceID());
|
||||
if(checkRace != null) {
|
||||
cachedRaces.put(checkRace.getRaceID(), checkRace);
|
||||
} else {
|
||||
Race newRace = SwissTimingFactory.INSTANCE.createRace(message.getRaceID(), null, null);
|
||||
storeRace(newRace);
|
||||
cachedRaces.put(newRace.getRaceID(), newRace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user