
commit b8db05c28eeaec8b69a4bc63c1df12d2191b36ae Author: Karsten Loesing <karsten.loesing@gmx.net> Date: Thu Mar 6 16:13:21 2014 +0100 Fix compressing bandwidth and weights histories. We compress histories by merging adjacent intervals to save disk space, unless we want intervals to stay distinct. For example, we might want to compress all intervals on the same UTC day but not want to merge intervals with the previous or next UTC day. However, we had an off-by-one error which made us merge the wrong intervals. For example, we merged intervals from 23:00:00 on one day to 23:00:00 the next day. --- src/org/torproject/onionoo/BandwidthDataWriter.java | 4 ++-- src/org/torproject/onionoo/WeightsDataWriter.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/torproject/onionoo/BandwidthDataWriter.java b/src/org/torproject/onionoo/BandwidthDataWriter.java index 4291bdd..68bf59a 100644 --- a/src/org/torproject/onionoo/BandwidthDataWriter.java +++ b/src/org/torproject/onionoo/BandwidthDataWriter.java @@ -196,8 +196,8 @@ public class BandwidthDataWriter implements DataWriter, intervalLengthMillis = 10L * 24L * 60L * 60L * 1000L; } if (lastEndMillis == startMillis && - (lastEndMillis / intervalLengthMillis) == - (endMillis / intervalLengthMillis)) { + ((lastEndMillis - 1L) / intervalLengthMillis) == + ((endMillis - 1L) / intervalLengthMillis)) { lastEndMillis = endMillis; lastBandwidth += bandwidth; } else { diff --git a/src/org/torproject/onionoo/WeightsDataWriter.java b/src/org/torproject/onionoo/WeightsDataWriter.java index 40c85ed..81b412c 100644 --- a/src/org/torproject/onionoo/WeightsDataWriter.java +++ b/src/org/torproject/onionoo/WeightsDataWriter.java @@ -387,8 +387,8 @@ public class WeightsDataWriter implements DataWriter, DescriptorListener { intervalLengthMillis = 10L * 24L * 60L * 60L * 1000L; } if (lastEndMillis == startMillis && - (lastEndMillis / intervalLengthMillis) == - (endMillis / intervalLengthMillis)) { + ((lastEndMillis - 1L) / intervalLengthMillis) == + ((endMillis - 1L) / intervalLengthMillis)) { double lastIntervalInHours = (double) ((lastEndMillis - lastStartMillis) / 60L * 60L * 1000L); double currentIntervalInHours = (double) ((endMillis