Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #806 from matrix-org/erikj/hash_cache
Browse files Browse the repository at this point in the history
Cache get_event_reference_hashes
  • Loading branch information
erikjohnston committed Jun 1, 2016
2 parents 83b70c9 + aefd2d1 commit 0f06b49
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions synapse/storage/signatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,24 @@

from unpaddedbase64 import encode_base64
from synapse.crypto.event_signing import compute_event_reference_hash
from synapse.util.caches.descriptors import cached, cachedList


class SignatureStore(SQLBaseStore):
"""Persistence for event signatures and hashes"""

@cached(lru=True)
def get_event_reference_hash(self, event_id):
return self._get_event_reference_hashes_txn(event_id)

@cachedList(cached_method_name="get_event_reference_hash",
list_name="event_ids", num_args=1)
def get_event_reference_hashes(self, event_ids):
def f(txn):
return [
self._get_event_reference_hashes_txn(txn, ev)
for ev in event_ids
]
return {
event_id: self._get_event_reference_hashes_txn(txn, event_id)
for event_id in event_ids
}

return self.runInteraction(
"get_event_reference_hashes",
Expand All @@ -41,15 +48,15 @@ def add_event_hashes(self, event_ids):
hashes = yield self.get_event_reference_hashes(
event_ids
)
hashes = [
{
hashes = {
e_id: {
k: encode_base64(v) for k, v in h.items()
if k == "sha256"
}
for h in hashes
]
for e_id, h in hashes.items()
}

defer.returnValue(zip(event_ids, hashes))
defer.returnValue(hashes.items())

def _get_event_reference_hashes_txn(self, txn, event_id):
"""Get all the hashes for a given PDU.
Expand Down

0 comments on commit 0f06b49

Please sign in to comment.