mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
cache_helpers: Use the same select_related as the cache methods use.
Only prefetching `realm` and `bot_owner` means that the cache values filled by this process differ from the cache values that would be stored on a cache miss -- leading to extra database queries for those objects. Use the same `base_get_user_queryset()` to ensure we get the same related prefetches.
This commit is contained in:
committed by
Tim Abbott
parent
392f7556dd
commit
c29e11de93
@@ -26,6 +26,11 @@ from zerver.lib.sessions import session_engine
|
|||||||
from zerver.lib.users import get_all_api_keys
|
from zerver.lib.users import get_all_api_keys
|
||||||
from zerver.models import Client, UserProfile
|
from zerver.models import Client, UserProfile
|
||||||
from zerver.models.clients import get_client_cache_key
|
from zerver.models.clients import get_client_cache_key
|
||||||
|
from zerver.models.users import base_get_user_queryset
|
||||||
|
|
||||||
|
|
||||||
|
def get_users() -> QuerySet[UserProfile]:
|
||||||
|
return base_get_user_queryset().filter(long_term_idle=False, realm__in=get_active_realm_ids())
|
||||||
|
|
||||||
|
|
||||||
def user_cache_items(
|
def user_cache_items(
|
||||||
@@ -79,12 +84,6 @@ def get_active_realm_ids() -> QuerySet[RealmCount, int]:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_users() -> QuerySet[UserProfile]:
|
|
||||||
return UserProfile.objects.select_related("realm", "bot_owner").filter(
|
|
||||||
long_term_idle=False, realm__in=get_active_realm_ids()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Format is (objects query, items filler function, timeout, batch size)
|
# Format is (objects query, items filler function, timeout, batch size)
|
||||||
#
|
#
|
||||||
# The objects queries are put inside lambdas to prevent Django from
|
# The objects queries are put inside lambdas to prevent Django from
|
||||||
|
|||||||
Reference in New Issue
Block a user