diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-10-28 12:11:39 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2017-10-28 12:11:39 +1300 |
commit | db6fd89ae6c85056bd90bc325689be7d11ed5b75 (patch) | |
tree | 08e85658fe046adf9937fab79f2f3195fa6ab868 /src | |
parent | 65ffcb945a0cd62198d0570f9044114bb1e57528 (diff) | |
download | traccar-server-db6fd89ae6c85056bd90bc325689be7d11ed5b75.tar.gz traccar-server-db6fd89ae6c85056bd90bc325689be7d11ed5b75.tar.bz2 traccar-server-db6fd89ae6c85056bd90bc325689be7d11ed5b75.zip |
Atomic statistics check (fix #3614)
Diffstat (limited to 'src')
-rw-r--r-- | src/org/traccar/database/StatisticsManager.java | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/org/traccar/database/StatisticsManager.java b/src/org/traccar/database/StatisticsManager.java index 06a3e7b35..9a3ff06bd 100644 --- a/src/org/traccar/database/StatisticsManager.java +++ b/src/org/traccar/database/StatisticsManager.java @@ -27,12 +27,13 @@ import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; public class StatisticsManager { private static final int SPLIT_MODE = Calendar.DAY_OF_MONTH; - private int lastUpdate = Calendar.getInstance().get(SPLIT_MODE); + private AtomicInteger lastUpdate = new AtomicInteger(Calendar.getInstance().get(SPLIT_MODE)); private Set<Long> users = new HashSet<>(); private Set<Long> devices = new HashSet<>(); @@ -47,7 +48,7 @@ public class StatisticsManager { private void checkSplit() { int currentUpdate = Calendar.getInstance().get(SPLIT_MODE); - if (lastUpdate != currentUpdate) { + if (lastUpdate.getAndSet(currentUpdate) != currentUpdate) { Statistics statistics = new Statistics(); statistics.setCaptureTime(new Date()); statistics.setActiveUsers(users.size()); @@ -96,7 +97,6 @@ public class StatisticsManager { smsSent = 0; geocoderRequests = 0; geolocationRequests = 0; - lastUpdate = currentUpdate; } } |