Stop trying to fetch events with event_id=None. (#5753)
`None` is not a valid event id, so queuing up a database fetch for it seems like a silly thing to do. I considered making `get_event` return `None` if `event_id is None`, but then its interaction with `allow_none` seemed uninituitive, and strong typing ftw.
This commit is contained in:
parent
418635e68a
commit
f30a71a67b
|
@ -0,0 +1 @@
|
||||||
|
Stop trying to fetch events with event_id=None.
|
|
@ -378,7 +378,11 @@ class EventCreationHandler(object):
|
||||||
# tolerate them in event_auth.check().
|
# tolerate them in event_auth.check().
|
||||||
prev_state_ids = yield context.get_prev_state_ids(self.store)
|
prev_state_ids = yield context.get_prev_state_ids(self.store)
|
||||||
prev_event_id = prev_state_ids.get((EventTypes.Member, event.sender))
|
prev_event_id = prev_state_ids.get((EventTypes.Member, event.sender))
|
||||||
prev_event = yield self.store.get_event(prev_event_id, allow_none=True)
|
prev_event = (
|
||||||
|
yield self.store.get_event(prev_event_id, allow_none=True)
|
||||||
|
if prev_event_id
|
||||||
|
else None
|
||||||
|
)
|
||||||
if not prev_event or prev_event.membership != Membership.JOIN:
|
if not prev_event or prev_event.membership != Membership.JOIN:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
(
|
(
|
||||||
|
@ -521,6 +525,8 @@ class EventCreationHandler(object):
|
||||||
"""
|
"""
|
||||||
prev_state_ids = yield context.get_prev_state_ids(self.store)
|
prev_state_ids = yield context.get_prev_state_ids(self.store)
|
||||||
prev_event_id = prev_state_ids.get((event.type, event.state_key))
|
prev_event_id = prev_state_ids.get((event.type, event.state_key))
|
||||||
|
if not prev_event_id:
|
||||||
|
return
|
||||||
prev_event = yield self.store.get_event(prev_event_id, allow_none=True)
|
prev_event = yield self.store.get_event(prev_event_id, allow_none=True)
|
||||||
if not prev_event:
|
if not prev_event:
|
||||||
return
|
return
|
||||||
|
|
|
@ -139,8 +139,11 @@ class EventsWorkerStore(SQLBaseStore):
|
||||||
If there is a mismatch, behave as per allow_none.
|
If there is a mismatch, behave as per allow_none.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Deferred : A FrozenEvent.
|
Deferred[EventBase|None]
|
||||||
"""
|
"""
|
||||||
|
if not isinstance(event_id, str):
|
||||||
|
raise TypeError("Invalid event event_id %r" % (event_id,))
|
||||||
|
|
||||||
events = yield self.get_events_as_list(
|
events = yield self.get_events_as_list(
|
||||||
[event_id],
|
[event_id],
|
||||||
check_redacted=check_redacted,
|
check_redacted=check_redacted,
|
||||||
|
|
|
@ -211,16 +211,18 @@ class StatsStore(StateDeltasStore):
|
||||||
avatar_id = current_state_ids.get((EventTypes.RoomAvatar, ""))
|
avatar_id = current_state_ids.get((EventTypes.RoomAvatar, ""))
|
||||||
canonical_alias_id = current_state_ids.get((EventTypes.CanonicalAlias, ""))
|
canonical_alias_id = current_state_ids.get((EventTypes.CanonicalAlias, ""))
|
||||||
|
|
||||||
|
event_ids = [
|
||||||
|
join_rules_id,
|
||||||
|
history_visibility_id,
|
||||||
|
encryption_id,
|
||||||
|
name_id,
|
||||||
|
topic_id,
|
||||||
|
avatar_id,
|
||||||
|
canonical_alias_id,
|
||||||
|
]
|
||||||
|
|
||||||
state_events = yield self.get_events(
|
state_events = yield self.get_events(
|
||||||
[
|
[ev for ev in event_ids if ev is not None]
|
||||||
join_rules_id,
|
|
||||||
history_visibility_id,
|
|
||||||
encryption_id,
|
|
||||||
name_id,
|
|
||||||
topic_id,
|
|
||||||
avatar_id,
|
|
||||||
canonical_alias_id,
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_or_none(event_id, arg):
|
def _get_or_none(event_id, arg):
|
||||||
|
|
Loading…
Reference in New Issue