mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 13:45:42 +00:00
adding lock for waypoints
This commit is contained in:
+7
-3
@@ -2573,15 +2573,18 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
TimePoint timePoint, String leaderboardGroupName, UUID leaderboardGroupId, String leaderboardName,
|
||||
WindLegTypeAndLegBearingAndORCPerformanceCurveCache cache) throws NoWindException {
|
||||
Double result = null;
|
||||
Course course = trackedRace.getRace().getCourse();
|
||||
final Course course = trackedRace.getRace().getCourse();
|
||||
course.lockForRead(); // make sure the tracked leg survives this call even if a course update is pending
|
||||
trackedRace.lockForRead(trackedRace.getMarkPassings(competitor));
|
||||
try {
|
||||
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, timePoint);
|
||||
final TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, timePoint);
|
||||
switch (dataType) {
|
||||
case LEG_TACKTYPE_LONGTACK_SHORTTACK:
|
||||
if (trackedLeg != null) {
|
||||
final TackType tackType = trackedLeg.getTackType(timePoint);
|
||||
result = (tackType == null) ? null : ((tackType==TackType.LONGTACK) ? 1.0 : 0.0);
|
||||
result = (tackType == null) ? 0.0 : ((tackType==TackType.LONGTACK) ? 1.0 : -1.0);
|
||||
} else {
|
||||
result = 0.0;
|
||||
}
|
||||
break;
|
||||
case RACE_CURRENT_SPEED_OVER_GROUND_IN_KNOTS:
|
||||
@@ -2949,6 +2952,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
trackedRace.unlockAfterRead(trackedRace.getMarkPassings(competitor));
|
||||
course.unlockAfterRead();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user