Fix for Bugzilla Bug 53 - Negative effects of caching race list in SwissTimingAdapterPersistenceImpl?

This commit is contained in:
fmittag
2011-11-15 11:26:38 +01:00
committed by Axel Uhl
parent 6fa43efb50
commit 46e5a74ba2
@@ -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);
}
}
}
}