Skip to content

Commit

Permalink
Fix: handle the case when a scheduled query wasn't run before
Browse files Browse the repository at this point in the history
  • Loading branch information
arikfr committed Apr 2, 2017
1 parent 2707e24 commit 9034639
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
8 changes: 6 additions & 2 deletions redash/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -833,8 +833,12 @@ def outdated_queries(cls):
now = utils.utcnow()
outdated_queries = {}
for query in queries:
if should_schedule_next(query.latest_query_data.retrieved_at, now,
query.schedule, query.schedule_failures):
if query.latest_query_data:
retrieved_at = query.latest_query_data.retrieved_at
else:
retrieved_at = now

if should_schedule_next(retrieved_at, now, query.schedule, query.schedule_failures):
key = "{}:{}".format(query.query_hash, query.data_source_id)
outdated_queries[key] = query

Expand Down
6 changes: 6 additions & 0 deletions tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ def test_outdated_queries_skips_unscheduled_queries(self):

self.assertNotIn(query, queries)

def test_outdated_queries_skips_unscheduled_queries(self):
query = self.factory.create_query(schedule='60')
queries = models.Query.outdated_queries()

self.assertNotIn(query, queries)

def test_outdated_queries_works_with_ttl_based_schedule(self):
two_hours_ago = utcnow() - datetime.timedelta(hours=2)
query = self.factory.create_query(schedule="3600")
Expand Down

0 comments on commit 9034639

Please sign in to comment.