Disable caching in /sync corner case (#16080)

Fixes #15502
This commit is contained in:
Matthew Ma 2023-08-17 02:22:50 -07:00 committed by GitHub
parent 8c3bcea2da
commit 8a4fb7a6ba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 10 deletions

1
changelog.d/16080.bugfix Normal file
View file

@ -0,0 +1 @@
Fix a long-standing bu in `/sync` where timeout=0 does not skip caching, resulting in slow calls in cases where there are no new changes. Contributed by @PlasmaIntec.

View file

@ -387,16 +387,16 @@ class SyncHandler:
from_token=since_token, from_token=since_token,
) )
# if nothing has happened in any of the users' rooms since /sync was called, # if nothing has happened in any of the users' rooms since /sync was called,
# the resultant next_batch will be the same as since_token (since the result # the resultant next_batch will be the same as since_token (since the result
# is generated when wait_for_events is first called, and not regenerated # is generated when wait_for_events is first called, and not regenerated
# when wait_for_events times out). # when wait_for_events times out).
# #
# If that happens, we mustn't cache it, so that when the client comes back # If that happens, we mustn't cache it, so that when the client comes back
# with the same cache token, we don't immediately return the same empty # with the same cache token, we don't immediately return the same empty
# result, causing a tightloop. (#8518) # result, causing a tightloop. (#8518)
if result.next_batch == since_token: if result.next_batch == since_token:
cache_context.should_cache = False cache_context.should_cache = False
if result: if result:
if sync_config.filter_collection.lazy_load_members(): if sync_config.filter_collection.lazy_load_members():