summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2016-06-22 18:07:14 +0100
committerDavid Baker <dave@matrix.org>2016-06-22 18:07:14 +0100
commitb5fb7458d501d3e0e24062b2a479232246f13d4e (patch)
tree6f09bb3c8b991baa8fcc3cd58b2cafc1058c47d1 /synapse/storage
parentStyle (diff)
downloadsynapse-b5fb7458d501d3e0e24062b2a479232246f13d4e.tar.xz
Actually we need to order these properly
otherwise we'll end up returning the wrong 20
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/event_push_actions.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/synapse/storage/event_push_actions.py b/synapse/storage/event_push_actions.py

index 2e85cf5f51..5f1b6f63a9 100644 --- a/synapse/storage/event_push_actions.py +++ b/synapse/storage/event_push_actions.py
@@ -184,7 +184,8 @@ class EventPushActionsStore(SQLBaseStore): "get_unread_push_actions_for_user_in_range", get_no_receipt ) - defer.returnValue([ + # Make a list of dicts from the two sets of results. + notifs = [ { "event_id": row[0], "room_id": row[1], @@ -192,7 +193,16 @@ class EventPushActionsStore(SQLBaseStore): "actions": json.loads(row[3]), "received_ts": row[4], } for row in after_read_receipt + no_read_receipt - ][:limit]) + ] + + # Now sort it so it's ordered correctly, since currently it will + # contain results from the first query, correctly ordered, followed + # by results from the second query, but we want them all ordered + # by received_ts + notifs.sort(key=lambda r: -(r['received_ts'] or 0)) + + # Now return the first `limit` + defer.returnValue(notifs[:limit]) @defer.inlineCallbacks def get_time_of_last_push_action_before(self, stream_ordering):