[ 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