james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tellier Benoit (JIRA)" <server-...@james.apache.org>
Subject [jira] [Resolved] (JAMES-2047) 500 errors upon JMAP mailbox provisionning
Date Wed, 07 Jun 2017 10:53:18 GMT

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

Tellier Benoit resolved JAMES-2047.
-----------------------------------
    Resolution: Fixed

Merged.

> 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


Mime
View raw message