add logs for investigation

sync3
Laurent 5 months ago
parent efbe72d675
commit 8d1b3dbdc9
  1. 27
      sync/signals.py

@ -96,7 +96,14 @@ def notify_impacted_users(instance):
def save_model_log_if_possible(instance, signal, created): def save_model_log_if_possible(instance, signal, created):
users = related_users_registry.get_users(instance.id) users = related_users_registry.get_users(instance.id)
# print(f'*** save_model_log >>> users = {users}, instance = {instance}') logger.debug(f'*** save_model_log_if_possible >>> users from registry = {users}, instance = {instance}')
if not users:
logger.warning(f'!!! Registry returned empty users for instance {instance.id} ({instance.__class__.__name__})')
# Try to recalculate users as fallback
users = related_users(instance)
logger.info(f'!!! Recalculated users for fallback: {users}')
if users: if users:
if signal == post_save or signal == pre_save: if signal == post_save or signal == pre_save:
if created: if created:
@ -128,8 +135,11 @@ def save_model_log(users, model_operation, model_name, model_id, store_id):
logger.info(f'*** creating ModelLogs for: {model_operation} {model_name} : {users}') logger.info(f'*** creating ModelLogs for: {model_operation} {model_name} : {users}')
try:
with transaction.atomic(): with transaction.atomic():
created_logs = []
for user in users: for user in users:
logger.debug(f'Creating ModelLog for user {user.id} ({user.username})')
model_log = ModelLog( model_log = ModelLog(
user=user, user=user,
operation=model_operation, operation=model_operation,
@ -139,6 +149,21 @@ def save_model_log(users, model_operation, model_name, model_id, store_id):
device_id=device_id device_id=device_id
) )
model_log.save() model_log.save()
created_logs.append(model_log.id)
logger.debug(f'Successfully created ModelLog {model_log.id}')
logger.info(f'*** Successfully created {len(created_logs)} ModelLogs: {created_logs}')
# Verify ModelLogs were actually persisted
persisted_count = ModelLog.objects.filter(id__in=created_logs).count()
if persisted_count != len(created_logs):
logger.error(f'*** PERSISTENCE VERIFICATION FAILED! Created {len(created_logs)} ModelLogs but only {persisted_count} were persisted to database')
else:
logger.debug(f'*** PERSISTENCE VERIFIED: All {persisted_count} ModelLogs successfully persisted')
except Exception as e:
logger.error(f'*** FAILED to create ModelLogs for: {model_operation} {model_name}, users: {[u.id for u in users]}, error: {e}', exc_info=True)
raise
# with transaction.atomic(): # with transaction.atomic():
# for user in users: # for user in users:

Loading…
Cancel
Save