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:[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]