james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tellier Benoit (JIRA)" <server-...@james.apache.org>
Subject [jira] [Created] (JAMES-2047) 500 errors upon JMAP mailbox provisionning
Date Tue, 06 Jun 2017 04:18:18 GMT
Tellier Benoit created JAMES-2047:
-------------------------------------

             Summary: 500 errors upon JMAP mailbox provisionning
                 Key: JAMES-2047
                 URL: https://issues.apache.org/jira/browse/JAMES-2047
             Project: James Server
          Issue Type: Bug
          Components: JMAP
            Reporter: Tellier Benoit
            Assignee: Antoine Duprat


INBOX issues GetMessagesList and GetMailboxes calls in parallel, Leading to concurrency upon
mailboxes creation.

We might have data races with the Read before Write strategy, leading to trial to create mailboxes
ending up raising *MailboxExistException*. These exceptions, not harmful, results in *500*
errors at the JMAP level.

{code:java}
LOGGER: org.eclipse.jetty.servlet.ServletHandler
(That's why it is a 500 error)

java.lang.RuntimeException: Mailbox with name=#private:tmhtran@linagora.com:Outbox already
exists. at com.google.common.base.Throwables.propagate(Throwables.java:160) 
 at org.apache.james.jmap.DefaultMailboxesProvisioningFilter.createMailbox(DefaultMailboxesProvisioningFilter.java:106)

 at org.apache.james.jmap.DefaultMailboxesProvisioningFilter.lambda$createDefaultMailboxes$127(DefaultMailboxesProvisioningFilter.java:87)

 at org.apache.james.jmap.DefaultMailboxesProvisioningFilter$$Lambda$275/728763676.accept(Unknown
Source) 
 at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) 
 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) 
 at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.Iterator.forEachRemaining(Iterator.java:116)

at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) 
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
 at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) 
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) 
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) 
at org.apache.james.jmap.DefaultMailboxesProvisioningFilter.createDefaultMailboxes(DefaultMailboxesProvisioningFilter.java:87)

at org.apache.james.jmap.DefaultMailboxesProvisioningFilter.createMailboxesIfNeeded(DefaultMailboxesProvisioningFilter.java:74)
{code}

We need to catch and swallow this exception (the mailbox is created, that is what we want).
We can log it with the INFO level to keep a track of this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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


Mime
View raw message