mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-08 04:02:16 -04:00
Intern all the things
This commit is contained in:
parent
f96526ffc2
commit
acdfef7b14
8 changed files with 97 additions and 45 deletions
|
@ -18,6 +18,7 @@ from synapse.api.errors import StoreError
|
|||
from synapse.util.logcontext import LoggingContext, PreserveLoggingContext
|
||||
from synapse.util.caches.dictionary_cache import DictionaryCache
|
||||
from synapse.util.caches.descriptors import Cache
|
||||
from synapse.util.caches import intern_dict
|
||||
import synapse.metrics
|
||||
|
||||
|
||||
|
@ -350,7 +351,7 @@ class SQLBaseStore(object):
|
|||
"""
|
||||
col_headers = list(column[0] for column in cursor.description)
|
||||
results = list(
|
||||
dict(zip(col_headers, row)) for row in cursor.fetchall()
|
||||
intern_dict(dict(zip(col_headers, row))) for row in cursor.fetchall()
|
||||
)
|
||||
return results
|
||||
|
||||
|
|
|
@ -62,18 +62,17 @@ class ReceiptsStore(SQLBaseStore):
|
|||
|
||||
@cachedInlineCallbacks(num_args=2)
|
||||
def get_receipts_for_user(self, user_id, receipt_type):
|
||||
def f(txn):
|
||||
sql = (
|
||||
"SELECT room_id,event_id "
|
||||
"FROM receipts_linearized "
|
||||
"WHERE user_id = ? AND receipt_type = ? "
|
||||
)
|
||||
txn.execute(sql, (user_id, receipt_type))
|
||||
return txn.fetchall()
|
||||
rows = yield self._simple_select_list(
|
||||
table="receipts_linearized",
|
||||
keyvalues={
|
||||
"user_id": user_id,
|
||||
"receipt_type": receipt_type,
|
||||
},
|
||||
retcols=("room_id", "event_id"),
|
||||
desc="get_receipts_for_user",
|
||||
)
|
||||
|
||||
defer.returnValue(dict(
|
||||
(yield self.runInteraction("get_receipts_for_user", f))
|
||||
))
|
||||
defer.returnValue({row["room_id"]: row["event_id"] for row in rows})
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def get_linearized_receipts_for_rooms(self, room_ids, to_key, from_key=None):
|
||||
|
|
|
@ -156,9 +156,7 @@ class StateStore(SQLBaseStore):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def get_current_state_for_key(self, room_id, event_type, state_key):
|
||||
event_ids = yield self._get_current_state_for_key(
|
||||
room_id, intern_string(event_type), intern_string(state_key)
|
||||
)
|
||||
event_ids = yield self._get_current_state_for_key(room_id, event_type, state_key)
|
||||
events = yield self._get_events(event_ids, get_prev_content=False)
|
||||
defer.returnValue(events)
|
||||
|
||||
|
@ -205,7 +203,7 @@ class StateStore(SQLBaseStore):
|
|||
|
||||
results = {}
|
||||
for row in rows:
|
||||
key = (intern_string(row["type"]), intern_string(row["state_key"]))
|
||||
key = (row["type"], row["state_key"])
|
||||
results.setdefault(row["state_group"], {})[key] = row["event_id"]
|
||||
return results
|
||||
|
||||
|
@ -286,7 +284,9 @@ class StateStore(SQLBaseStore):
|
|||
desc="_get_state_group_for_events",
|
||||
)
|
||||
|
||||
defer.returnValue({row["event_id"]: row["state_group"] for row in rows})
|
||||
defer.returnValue({
|
||||
intern(row["event_id"].encode('ascii')): row["state_group"] for row in rows
|
||||
})
|
||||
|
||||
def _get_some_state_from_cache(self, group, types):
|
||||
"""Checks if group is in cache. See `_get_state_for_groups`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue