Skip to content

Commit 98e7f36

Browse files
committed
giving wall_e ability to recover when a user is stuck in processed state
1 parent 6dab9b8 commit 98e7f36

2 files changed

Lines changed: 20 additions & 7 deletions

File tree

wall_e/extensions/leveling.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def __init__(self):
5252
self.bucket_update_in_progress = False
5353
self.NUMBER_OF_UPDATE_ATTEMPTS_PER_USER = 15
5454
self.MAX_RETRIES_FOR_FETCHING_USER = 5
55+
self.MAX_USER_UPDATE_CONCURRENT_ATTEMPTS = 30
5556
self.ensure_xp_roles_exist_and_have_right_users.start()
5657
self.process_leveling_profile_data_for_lurkers.start()
5758
self.process_outdated_profile_pics.start()
@@ -685,11 +686,15 @@ async def _update_users_with_given_ids(self, logger, updated_user_ids):
685686
total_number_of_updates_needed = len(updated_user_ids)
686687
for index, user_id in enumerate(updated_user_ids):
687688
if self.user_points[user_id].being_processed:
688-
logger.info(
689-
f"[Leveling _update_users_with_given_ids()] skipping user with ID {user_id} who is apparently"
690-
" already being processed"
691-
)
692-
continue
689+
if self.user_points[user_id].concurrent_attempts > self.MAX_USER_UPDATE_CONCURRENT_ATTEMPTS:
690+
self.user_points[user_id].concurrent_attempts = 0
691+
else:
692+
self.user_points[user_id].concurrent_attempts += 1
693+
logger.info(
694+
f"[Leveling _update_users_with_given_ids()] skipping user with ID {user_id} who is apparently"
695+
" already being processed"
696+
)
697+
continue
693698
self.user_points[user_id].being_processed = True
694699
user_processed = False
695700
logger.debug(
@@ -740,7 +745,15 @@ async def process_leveling_profile_data_for_active_users(self):
740745
for index, update_user in enumerate(updated_user_logs):
741746
updated_user_id = update_user[1]
742747
if self.user_points[updated_user_id].being_processed:
743-
continue
748+
if self.user_points[updated_user_id].concurrent_attempts > self.MAX_USER_UPDATE_CONCURRENT_ATTEMPTS:
749+
self.user_points[updated_user_id].concurrent_attempts = 0
750+
else:
751+
self.user_points[updated_user_id].concurrent_attempts += 1
752+
self.logger.info(
753+
f"[Leveling process_leveling_profile_data_for_active_users()] skipping user with ID"
754+
f" {updated_user_id} who is apparently already being processed"
755+
)
756+
continue
744757
self.user_points[updated_user_id].being_processed = True
745758
updated_user_log_id = update_user[0] # noqa: F841
746759
user_processed = False

0 commit comments

Comments
 (0)