[
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:[email protected]: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: [email protected]
For additional commands, e-mail: [email protected]