diff --git a/synapse/handlers/stats.py b/synapse/handlers/stats.py
index 6341c3244e..572da0a344 100644
--- a/synapse/handlers/stats.py
+++ b/synapse/handlers/stats.py
@@ -159,12 +159,9 @@ class StatsHandler(StateDeltasHandler):
if event:
event_content = event.content or {}
- # We use stream_pos here rather than fetch by event_id as event_id
- # may be None
- stream_timestamp = yield self.store.get_received_ts_by_stream_pos(
- stream_pos
- )
- stream_timestamp = int(stream_timestamp)
+ # We can't afford for this time to stray into the past, so we count
+ # it as now.
+ stream_timestamp = int(self.clock.time_msec())
# All the values in this dict are deltas (RELATIVE changes)
room_stats_delta = {}
diff --git a/synapse/storage/stats.py b/synapse/storage/stats.py
index 7bf729c9d8..c022f620fc 100644
--- a/synapse/storage/stats.py
+++ b/synapse/storage/stats.py
@@ -948,10 +948,11 @@ class StatsStore(StateDeltasStore):
src_row = self._simple_select_one_txn(
txn, src_table, keyvalues, copy_columns
)
+ all_dest_keyvalues = {**keyvalues, **extra_dst_keyvalues}
dest_current_row = self._simple_select_one_txn(
txn,
into_table,
- keyvalues={ **keyvalues, **extra_dst_keyvalues },
+ keyvalues=all_dest_keyvalues,
retcols=list(chain(additive_relatives.keys(), copy_columns)),
allow_none=True,
)
@@ -968,7 +969,7 @@ class StatsStore(StateDeltasStore):
else:
for (key, val) in additive_relatives.items():
src_row[key] = dest_current_row[key] + val
- self._simple_update_txn(txn, into_table, keyvalues, src_row)
+ self._simple_update_txn(txn, into_table, all_dest_keyvalues, src_row)
def incremental_update_room_total_events_and_bytes(self, in_positions):
"""
|