Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network/toolkit/rrd.py
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-05-06 18:00:28 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-05-06 19:03:22 (GMT)
commit936b7e3afba4167ed819785e906c268460712e6e (patch)
tree87bbb0cf8271252a8c2201605c86a7af90eede89 /sugar_network/toolkit/rrd.py
parent3edd183539c28fd9ee642df4159f6ba90876910c (diff)
No dups while reading stats from rrd
Diffstat (limited to 'sugar_network/toolkit/rrd.py')
-rw-r--r--sugar_network/toolkit/rrd.py40
1 files changed, 20 insertions, 20 deletions
diff --git a/sugar_network/toolkit/rrd.py b/sugar_network/toolkit/rrd.py
index 1fdc795..28c8be5 100644
--- a/sugar_network/toolkit/rrd.py
+++ b/sugar_network/toolkit/rrd.py
@@ -152,29 +152,29 @@ class _DbSet(object):
break
start = start - start % self._step - self._step
- end = end - end % self._step - self._step
+ end = min(end, start + _FETCH_PAGE * resolution)
+ end -= end % self._step + self._step
for db in reversed(revisions):
db_end = min(end, db.last - self._step)
- while start <= db_end:
- until = max(start,
- min(start + _FETCH_PAGE, db_end))
- (row_start, start, row_step), __, rows = _rrdtool.fetch(
- str(db.path),
- 'AVERAGE',
- '--start', str(start),
- '--end', str(until),
- '--resolution', str(resolution))
- for raw_row in rows:
- row_start += row_step
- row = {}
- accept = False
- for i, value in enumerate(raw_row):
- row[db.field_names[i]] = value
- accept = accept or value is not None
- if accept:
- yield row_start, row
- start = until + 1
+ if start > db_end:
+ break
+ (row_start, start, row_step), __, rows = _rrdtool.fetch(
+ str(db.path),
+ 'AVERAGE',
+ '--start', str(start),
+ '--end', str(db_end),
+ '--resolution', str(resolution))
+ for raw_row in rows:
+ row_start += row_step
+ row = {}
+ accept = False
+ for i, value in enumerate(raw_row):
+ row[db.field_names[i]] = value
+ accept = accept or value is not None
+ if accept:
+ yield row_start, row
+ start = db_end + 1
def _get_db(self, timestamp):
if self.__db is None and self._field_names: