Problem/Motivation

1. When a pull queue item fails with exception, the queue item stays in pull queue and gets retried on every subsequent queue processing operation. This can cause an issue where the queue becomes backlogged with the same errors over and over, preventing the rest of the queue from being processed.
2. The disallowPull method on Pull Event is all or nothing: there's no way, for example, to say "disallow for now" or "disallow this and stop the rest of queue processing"

Steps to reproduce

Proposed resolution

PullBase should respect exceptions thrown by subscribers, rather than hardcoding a DelayedRequeueException.

Remaining tasks

  • Extend PullBase::updateEntity and PullBase::updateEntity to respect the exceptions thrown by event subscribers and child classes, so that if a queue-related exception is thrown -- DelayedRequeueException, RequeueException, or SuspendQueueException -- it will percolate to the core cron queue handler, rather than being ignored and replaced with a DelayedRequeueException.
  • Update docs for Pull events, to suggest the various exceptions that may be thrown

User interface changes

None

API changes

Not really

Data model changes

None

Comments

aaronbauman created an issue.