Add support for storing rejected events in EventContext and data stores

This commit is contained in:
Erik Johnston 2015-01-22 15:50:17 +00:00
parent b390bf39f2
commit b1b85753d7
6 changed files with 83 additions and 11 deletions

View file

@ -30,6 +30,7 @@ from .transactions import TransactionStore
from .keys import KeyStore
from .event_federation import EventFederationStore
from .media_repository import MediaRepositoryStore
from .rejections import RejectionsStore
from .state import StateStore
from .signatures import SignatureStore
@ -66,7 +67,7 @@ SCHEMAS = [
# Remember to update this number every time an incompatible change is made to
# database schema files, so the users will be informed on server restarts.
SCHEMA_VERSION = 11
SCHEMA_VERSION = 12
class _RollbackButIsFineException(Exception):
@ -82,6 +83,7 @@ class DataStore(RoomMemberStore, RoomStore,
DirectoryStore, KeyStore, StateStore, SignatureStore,
EventFederationStore,
MediaRepositoryStore,
RejectionsStore,
):
def __init__(self, hs):
@ -224,6 +226,9 @@ class DataStore(RoomMemberStore, RoomStore,
if not outlier:
self._store_state_groups_txn(txn, event, context)
if context.rejected:
self._store_rejections_txn(txn, event.event_id, context.rejected)
if current_state:
txn.execute(
"DELETE FROM current_state_events WHERE room_id = ?",
@ -262,7 +267,7 @@ class DataStore(RoomMemberStore, RoomStore,
or_replace=True,
)
if is_new_state:
if is_new_state and not context.rejected:
self._simple_insert_txn(
txn,
"current_state_events",
@ -288,7 +293,7 @@ class DataStore(RoomMemberStore, RoomStore,
or_ignore=True,
)
if not backfilled:
if not backfilled and not context.rejected:
self._simple_insert_txn(
txn,
table="state_forward_extremities",