follow-cache-invalidate-before-fix
All checks were successful
Deploy on push / deploy (push) Successful in 5m18s
All checks were successful
Deploy on push / deploy (push) Successful in 5m18s
This commit is contained in:
@@ -109,6 +109,13 @@ async def follow(
|
||||
)
|
||||
.first()
|
||||
)
|
||||
|
||||
# 🔧 ИСПРАВЛЕНИЕ: Инвалидируем кэш ДО проверки existing_sub,
|
||||
# чтобы всегда возвращать актуальный список подписок (даже при ошибке "already following")
|
||||
cache_key_pattern = f"author:follows-{entity_type}s:{follower_id}"
|
||||
await redis.execute("DEL", cache_key_pattern)
|
||||
logger.debug(f"Инвалидирован кэш подписок: {cache_key_pattern}")
|
||||
|
||||
if existing_sub:
|
||||
logger.info(f"Пользователь {follower_id} уже подписан на {what.lower()} с ID {entity_id}")
|
||||
error = "already following"
|
||||
@@ -120,20 +127,10 @@ async def follow(
|
||||
session.commit()
|
||||
logger.info(f"Пользователь {follower_id} подписался на {what.lower()} с ID {entity_id}")
|
||||
|
||||
# Инвалидируем кэш подписок пользователя после любой операции
|
||||
cache_key_pattern = f"author:follows-{entity_type}s:{follower_id}"
|
||||
await redis.execute("DEL", cache_key_pattern)
|
||||
logger.debug(f"Инвалидирован кэш подписок: {cache_key_pattern}")
|
||||
|
||||
if cache_method:
|
||||
logger.debug("Обновление кэша сущности")
|
||||
await cache_method(entity_dict)
|
||||
|
||||
# Инвалидируем кэш подписок пользователя для обновления списка подписок
|
||||
cache_key_pattern = f"author:follows-{entity_type}s:{follower_id}"
|
||||
await redis.execute("DEL", cache_key_pattern)
|
||||
logger.debug(f"Инвалидирован кэш подписок: {cache_key_pattern}")
|
||||
|
||||
if what == "AUTHOR" and not existing_sub:
|
||||
logger.debug("Отправка уведомления автору о подписке")
|
||||
if isinstance(follower_dict, dict) and isinstance(entity_id, int):
|
||||
|
||||
Reference in New Issue
Block a user