From ee881f99d7f12e05e16086d0dfe77c0594181b3f Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 23 Feb 2025 20:39:52 -0500 Subject: [PATCH] fix some race conditions --- takahe/ap_handlers.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/takahe/ap_handlers.py b/takahe/ap_handlers.py index b2f8be0e..f160ddcf 100644 --- a/takahe/ap_handlers.py +++ b/takahe/ap_handlers.py @@ -111,15 +111,17 @@ def post_fetched(pk, post_data): def _post_fetched(pk, local, post_data, create: bool | None = None): - try: - post: Post = Post.objects.get(pk=pk) - except Post.DoesNotExist: - sleep(2) + retry = 1 + while True: try: post: Post = Post.objects.get(pk=pk) + break except Post.DoesNotExist: - logger.error(f"Fetched post {pk} not found") - return + if retry > 5: + logger.error(f"Fetched post {pk} not found") + return + sleep(retry) + retry += 1 owner = Takahe.get_or_create_remote_apidentity(post.author) if local: activate_language_for_user(owner.user) @@ -248,15 +250,17 @@ def identity_deleted(pk): def identity_fetched(pk): - try: - identity = Identity.objects.get(pk=pk) - except Identity.DoesNotExist: - sleep(2) + retry = 1 + while True: try: identity = Identity.objects.get(pk=pk) + break except Identity.DoesNotExist: - logger.error(f"Fetched identity {pk} not found") - return + if retry > 5: + logger.error(f"Fetched identity {pk} not found") + return + sleep(retry) + retry += 1 if identity.username and identity.domain: apid = Takahe.get_or_create_remote_apidentity(identity) if apid: