Skip to content

fix: use lock while fetching email changes#235

Merged
s-aga-r merged 3 commits into
frappe:developfrom
s-aga-r:fetch-changes-lock
Jul 22, 2025
Merged

fix: use lock while fetching email changes#235
s-aga-r merged 3 commits into
frappe:developfrom
s-aga-r:fetch-changes-lock

Conversation

@s-aga-r
Copy link
Copy Markdown
Collaborator

@s-aga-r s-aga-r commented Jul 22, 2025

Traceback with variables (most recent call last):
  File "apps/mail/mail/api/jmap.py", line 36, in push_notification
    enqueue_fetch_changes(account, state)
      account = 'notifications@frappecloud.com'
      request_data = {'@type': 'StateChange', 'changed': {'it': {'Thread': 'sv7ura', 'Mailbox': 'sv7ura', 'Email': 'sv7ura'}}}
      changes = [{'Thread': 'sv7ura', 'Mailbox': 'sv7ura', 'Email': 'sv7ura'}]
      change = {'Thread': 'sv7ura', 'Mailbox': 'sv7ura', 'Email': 'sv7ura'}
      key = ********
      state = 'sv7ura'
  File "apps/mail/mail/mail/doctype/email_message/email_message.py", line 1189, in enqueue_fetch_changes
    enqueue_job(
      account = 'notifications@frappecloud.com'
      email_state = 'sv7ura'
      job_id = 'fetch_changes:notifications@frappecloud.com'
  File "apps/mail/mail/utils/__init__.py", line 185, in enqueue_job
    frappe.enqueue(method, job_id=job_id, deduplicate=deduplicate, **kwargs)
      method = <function fetch_changes at 0x7f4b3c156c00>
      job_id = 'fetch_changes:notifications@frappecloud.com'
      deduplicate = True
      kwargs = {'account': 'notifications@frappecloud.com', 'email_state': 'sv7ura', 'queue': 'short', 'enqueue_after_commit': True}
  File "apps/frappe/frappe/utils/background_jobs.py", line 128, in enqueue
    job.delete()
      method = <function fetch_changes at 0x7f4b3c156c00>
      queue = 'short'
      timeout = None
      event = None
      is_async = True
      job_name = None
      now = False
      enqueue_after_commit = True
      on_success = None
      on_failure = None
      at_front = False
      job_id = 'fetch_changes:notifications@frappecloud.com'
      deduplicate = True
      at_front_when_starved = False
      kwargs = {'account': 'notifications@frappecloud.com', 'email_state': 'sv7ura'}
      job = <Job frappemail.frappe.cloud||fetch_changes|notifications@frappecloud.com: frappe.utils.background_jobs.execute_job(event=None, is_async=True, job_name='mail.mail.doctype.email_message.email_message.fetch_changes', kwargs={'account': 'notifications@frappecloud.com', 'email_state': 'svoura'}, method=<function fetch_changes at 0x7f4b3cfd4e00>, site='frappemail.frappe.cloud', user='Administrator')>
  File "env/lib/python3.11/site-packages/rq/job.py", line 1319, in delete
    self._remove_from_registries(pipeline=pipeline, remove_from_queue=remove_from_queue)
      self = <Job frappemail.frappe.cloud||fetch_changes|notifications@frappecloud.com: frappe.utils.background_jobs.execute_job(event=None, is_async=True, job_name='mail.mail.doctype.email_message.email_message.fetch_changes', kwargs={'account': 'notifications@frappecloud.com', 'email_state': 'svoura'}, method=<function fetch_changes at 0x7f4b3cfd4e00>, site='frappemail.frappe.cloud', user='Administrator')>
      pipeline = None
      remove_from_queue = True
      delete_dependents = False
      connection = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(host=localhost,port=11000,db=0)>)>)>
  File "env/lib/python3.11/site-packages/rq/job.py", line 1261, in _remove_from_registries
    if self.is_finished:
      self = <Job frappemail.frappe.cloud||fetch_changes|notifications@frappecloud.com: frappe.utils.background_jobs.execute_job(event=None, is_async=True, job_name='mail.mail.doctype.email_message.email_message.fetch_changes', kwargs={'account': 'notifications@frappecloud.com', 'email_state': 'svoura'}, method=<function fetch_changes at 0x7f4b3cfd4e00>, site='frappemail.frappe.cloud', user='Administrator')>
      pipeline = None
      remove_from_queue = True
      BaseRegistry = rq.registry.BaseRegistry
      Queue = rq.queue.Queue
      q = <Queue home-frappe-frappe-bench:short>
  File "env/lib/python3.11/site-packages/rq/job.py", line 442, in is_finished
    return self.get_status() == JobStatus.FINISHED
      self = <Job frappemail.frappe.cloud||fetch_changes|notifications@frappecloud.com: frappe.utils.background_jobs.execute_job(event=None, is_async=True, job_name='mail.mail.doctype.email_message.email_message.fetch_changes', kwargs={'account': 'notifications@frappecloud.com', 'email_state': 'svoura'}, method=<function fetch_changes at 0x7f4b3cfd4e00>, site='frappemail.frappe.cloud', user='Administrator')>
  File "env/lib/python3.11/site-packages/rq/job.py", line 410, in get_status
    raise InvalidJobOperation(f'Failed to retrieve status for job: {self.id}')
      self = <Job frappemail.frappe.cloud||fetch_changes|notifications@frappecloud.com: frappe.utils.background_jobs.execute_job(event=None, is_async=True, job_name='mail.mail.doctype.email_message.email_message.fetch_changes', kwargs={'account': 'notifications@frappecloud.com', 'email_state': 'svoura'}, method=<function fetch_changes at 0x7f4b3cfd4e00>, site='frappemail.frappe.cloud', user='Administrator')>
      refresh = True
      status = None
rq.exceptions.InvalidJobOperation: Failed to retrieve status for job: frappemail.frappe.cloud||fetch_changes|notifications@frappecloud.com

@s-aga-r s-aga-r force-pushed the fetch-changes-lock branch from ee475dc to fddc5c9 Compare July 22, 2025 13:46
@s-aga-r s-aga-r marked this pull request as ready for review July 22, 2025 13:52
@s-aga-r s-aga-r merged commit 7778511 into frappe:develop Jul 22, 2025
3 checks passed
@s-aga-r s-aga-r deleted the fetch-changes-lock branch August 12, 2025 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant