[ 
https://issues.apache.org/jira/browse/JAMES-2047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16038263#comment-16038263
 ] 

Tellier Benoit commented on JAMES-2047:
---------------------------------------

https://github.com/linagora/james-project/pull/828 is a proposal for this 
issue, and add tests

> 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:tmht...@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-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to