You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Tellier Benoit (JIRA)" <se...@james.apache.org> on 2017/06/07 10:54:18 UTC

[jira] [Closed] (JAMES-2047) 500 errors upon JMAP mailbox provisionning

     [ https://issues.apache.org/jira/browse/JAMES-2047?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tellier Benoit closed JAMES-2047.
---------------------------------

> 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