[ https://issues.apache.org/jira/browse/JAMES-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Edgar Asatryan closed JAMES-2458. --------------------------------- Resolution: Not A Problem > JMS mail queue caught in infinite loop. > --------------------------------------- > > Key: JAMES-2458 > URL: https://issues.apache.org/jira/browse/JAMES-2458 > Project: James Server > Issue Type: Wish > Components: Queue > Affects Versions: 3.0.0, master > Reporter: Edgar Asatryan > Priority: Major > > 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. > *Test* > Please run this test in *JMSMailQueueTest*: > {code:java} > @Test > void dequeueWhenQueueIsEmpty() throws Exception { > MailQueue.MailQueueItem mailQueueItem = getMailQueue().deQueue(); > } > {code} > 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 > {code:java} > MailQueueItem deQueue(long timeout, TimeUnit unit) throws MailQueueException, > InterruptedException; > {code} > 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 (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org