james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edgar Asatryan (JIRA)" <server-...@james.apache.org>
Subject [jira] [Created] (JAMES-2458) JMS mail queue caught in infinite loop.
Date Sun, 08 Jul 2018 18:24:00 GMT
Edgar Asatryan created JAMES-2458:

             Summary: JMS mail queue caught in infinite loop.
                 Key: JAMES-2458
                 URL: https://issues.apache.org/jira/browse/JAMES-2458
             Project: James Server
          Issue Type: Bug
          Components: Queue
    Affects Versions: 3.0.0, master
            Reporter: Edgar Asatryan

h2. *Background*

When *JMSMail* queue is empty the *deQueue* invocation leads to infinite loop.
Now the *deQueue* uses *while(true)* and tries to receive message with 10 second time out.
When queue is empty the branch containing return statement is never executed.

Please run this test in *JMSMailQueueTest*:
void dequeueWhenQueueIsEmpty() throws Exception {
    MailQueue.MailQueueItem mailQueueItem = getMailQueue().deQueue();

it's never stops.

Proposed solution to create the *EmptyMailQueueException* or *TimeoutMailQueueException* or
even more specialized exception to describe the problem.
Also in bundle with new exceptions we could add new method to the *MailQueue* like this

MailQueueItem deQueue(long timeout, TimeUnit unit) throws MailQueueException, InterruptedException;

to give users explicit control over timeout. This new method also gives a kind of symmetry
between *enQueue* and *deQueue*.

As an alternative I would suggest to simply return *null* when time is out and no message
is available for return.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message