mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-04 05:24:55 -04:00
Make handle_new_client_event
throws PartialStateConflictError
(#14665)
Then adapts calling code to retry when needed so it doesn't 500 to clients. Signed-off-by: Mathieu Velten <mathieuv@matrix.org> Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
This commit is contained in:
parent
046320b9b6
commit
54c012c5a8
7 changed files with 366 additions and 245 deletions
|
@ -167,12 +167,10 @@ class ResponseCache(Generic[KV]):
|
|||
# the should_cache bit, we leave it in the cache for now and schedule
|
||||
# its removal later.
|
||||
if self.timeout_sec and context.should_cache:
|
||||
self.clock.call_later(
|
||||
self.timeout_sec, self._result_cache.pop, key, None
|
||||
)
|
||||
self.clock.call_later(self.timeout_sec, self.unset, key)
|
||||
else:
|
||||
# otherwise, remove the result immediately.
|
||||
self._result_cache.pop(key, None)
|
||||
self.unset(key)
|
||||
return r
|
||||
|
||||
# make sure we do this *after* adding the entry to result_cache,
|
||||
|
@ -181,6 +179,14 @@ class ResponseCache(Generic[KV]):
|
|||
result.addBoth(on_complete)
|
||||
return entry
|
||||
|
||||
def unset(self, key: KV) -> None:
|
||||
"""Remove the cached value for this key from the cache, if any.
|
||||
|
||||
Args:
|
||||
key: key used to remove the cached value
|
||||
"""
|
||||
self._result_cache.pop(key, None)
|
||||
|
||||
async def wrap(
|
||||
self,
|
||||
key: KV,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue