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

Commit

Permalink
Stop reading from event_refrence_hashes
Browse files Browse the repository at this point in the history
Preparation for dropping this table altogether. Part of #6574.
  • Loading branch information
richvdh committed Jan 20, 2022
1 parent bfe6d55 commit 89ec7a6
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 31 deletions.
1 change: 1 addition & 0 deletions changelog.d/11794.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Preparation for database schema simplifications: stop reading from `event_reference_hashes`.
50 changes: 20 additions & 30 deletions synapse/storage/databases/main/signatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from typing import Dict, Iterable, List, Tuple
from typing import Collection, Dict, List, Tuple

from unpaddedbase64 import encode_base64

from synapse.storage._base import SQLBaseStore
from synapse.storage.types import Cursor
from synapse.crypto.event_signing import compute_event_reference_hash
from synapse.storage.databases.main.events_worker import (
EventRedactBehaviour,
EventsWorkerStore,
)
from synapse.util.caches.descriptors import cached, cachedList


class SignatureWorkerStore(SQLBaseStore):
class SignatureWorkerStore(EventsWorkerStore):
@cached()
def get_event_reference_hash(self, event_id):
# This is a dummy function to allow get_event_reference_hashes
Expand All @@ -32,7 +35,7 @@ def get_event_reference_hash(self, event_id):
cached_method_name="get_event_reference_hash", list_name="event_ids", num_args=1
)
async def get_event_reference_hashes(
self, event_ids: Iterable[str]
self, event_ids: Collection[str]
) -> Dict[str, Dict[str, bytes]]:
"""Get all hashes for given events.
Expand All @@ -42,17 +45,22 @@ async def get_event_reference_hashes(
Returns:
A mapping of event ID to a mapping of algorithm to hash.
"""
events = await self.get_events(
event_ids,
redact_behaviour=EventRedactBehaviour.AS_IS,
allow_rejected=True,
)

def f(txn):
return {
event_id: self._get_event_reference_hashes_txn(txn, event_id)
for event_id in event_ids
}
hashes: Dict[str, Dict[str, bytes]] = {}
for event_id in event_ids:
event = events[event_id]
ref_alg, ref_hash_bytes = compute_event_reference_hash(event)
hashes[event.event_id] = {ref_alg: ref_hash_bytes}

return await self.db_pool.runInteraction("get_event_reference_hashes", f)
return hashes

async def add_event_hashes(
self, event_ids: Iterable[str]
self, event_ids: Collection[str]
) -> List[Tuple[str, Dict[str, str]]]:
"""
Expand All @@ -70,24 +78,6 @@ async def add_event_hashes(

return list(encoded_hashes.items())

def _get_event_reference_hashes_txn(
self, txn: Cursor, event_id: str
) -> Dict[str, bytes]:
"""Get all the hashes for a given PDU.
Args:
txn:
event_id: Id for the Event.
Returns:
A mapping of algorithm -> hash.
"""
query = (
"SELECT algorithm, hash"
" FROM event_reference_hashes"
" WHERE event_id = ?"
)
txn.execute(query, (event_id,))
return {k: v for k, v in txn}


class SignatureStore(SignatureWorkerStore):
"""Persistence for event signatures and hashes"""
5 changes: 4 additions & 1 deletion synapse/storage/schema/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

SCHEMA_VERSION = 67 # remember to update the list below when updating
SCHEMA_VERSION = 68 # remember to update the list below when updating
"""Represents the expectations made by the codebase about the database schema
This should be incremented whenever the codebase changes its requirements on the
Expand Down Expand Up @@ -53,6 +53,9 @@
Changes in SCHEMA_VERSION = 67:
- state_events.prev_state is no longer written to.
Changes in SCHEMA_VERSION = 68:
- event_reference_hashes is no longer read.
"""


Expand Down

0 comments on commit 89ec7a6

Please sign in to comment.