The expectation is that "ago" means the query will return the results for the previous period relative to the time at which the query is made. So for ago and ago_unit of 15 and minutes, the result should be a sliding 15-minute window of time. So, if a query is made at 9:00, it should return the results from 8:45-9:00, and if a subsequent call is made at 9:05, it should return the results for 8:50-9:05.
(Noe that there is a several minute lag between the time of a query, and the most recently available data, so a query at 9:00 usually returns data in a range more like 8:45-8:53 or 8:45-8:54.)
The issue is that it appears once a query is made, the timeframe becomes locked, and all subsequent queries -- even minutes later -- still return results for that same initial timeframe, rather than representing a sliding window into the past relative to the time a query is made.
Current time: 2026-03-22 21:11:26.589495, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:12:26.595062, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:13:26.597782, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:14:26.599912, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:15:26.602785, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:16:26.605988, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:17:26.608386, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:18:26.610899, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:19:26.612860, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Current time: 2026-03-22 21:20:26.614942, Last record ts: 2026-03-22 21:05:00, Stop at ts: 2026-03-22 21:11:25.985634
[{'ts': datetime.datetime(2026, 3, 22, 21, 5), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 4), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 3), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 2), 'value': 3.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 1), 'value': 2.0},
{'ts': datetime.datetime(2026, 3, 22, 21, 0), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 59), 'value': 5.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 58), 'value': 1.0},
{'ts': datetime.datetime(2026, 3, 22, 20, 57), 'value': 1.0}]
Done
Note that in the above example, the first query (at 21:12) for the last 15-minutes of data returns data in a time frame of 20:57-21:05, and that the data from each subsequent call one minute later continues to return data from that same timeframe.
Describe the bug
It appears that repeated calls to query() for the Data Store Metrics manager are not updating the timeframe based on the ago parameter. For example, when ago is set to 15 (and ago_unit to minutes), and the query is repeated once a minute, the results are always returned for the same time frame on each subsequent call, rather than advancing a minute each time.
The expectation is that "ago" means the query will return the results for the previous period relative to the time at which the query is made. So for ago and ago_unit of 15 and minutes, the result should be a sliding 15-minute window of time. So, if a query is made at 9:00, it should return the results from 8:45-9:00, and if a subsequent call is made at 9:05, it should return the results for 8:50-9:05.
(Noe that there is a several minute lag between the time of a query, and the most recently available data, so a query at 9:00 usually returns data in a range more like 8:45-8:53 or 8:45-8:54.)
The issue is that it appears once a query is made, the timeframe becomes locked, and all subsequent queries -- even minutes later -- still return results for that same initial timeframe, rather than representing a sliding window into the past relative to the time a query is made.
To Reproduce
Steps to reproduce the behavior:
Output:
Note that in the above example, the first query (at 21:12) for the last 15-minutes of data returns data in a time frame of 20:57-21:05, and that the data from each subsequent call one minute later continues to return data from that same timeframe.
Expected behavior
When using the ago and ago_units parameter, I am expecting to be able to define a window of time for the query relative to the time at which the query is run. So if I re-run the query with the same parameters once a minute, I would expect the time window of the results to advance a minute each time as well.
Platform (please complete the following information):