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

Benoit Tellier closed JAMES-3177.
---------------------------------
    Fix Version/s: 3.6.0
       Resolution: Fixed

Both PR had been merged

> NPE upon SelectedMailboxImpl event processing
> ---------------------------------------------
>
>                 Key: JAMES-3177
>                 URL: https://issues.apache.org/jira/browse/JAMES-3177
>             Project: James Server
>          Issue Type: Improvement
>          Components: IMAPServer
>            Reporter: Benoit Tellier
>            Priority: Major
>              Labels: bug
>             Fix For: 3.6.0
>
>
> We noticed the following exception:
> {code:java}
>       java.lang.NullPointerException: null
>       at 
> org.apache.james.imap.processor.base.SelectedMailboxImpl.mailboxEvent(SelectedMailboxImpl.java:363)
>       at 
> org.apache.james.imap.processor.base.SelectedMailboxImpl.event(SelectedMailboxImpl.java:308)
>       at 
> org.apache.james.mailbox.events.MailboxListenerExecutor.execute(MailboxListenerExecutor.java:42)
>       at 
> org.apache.james.mailbox.events.EventDispatcher.lambda$executeListener$6(EventDispatcher.java:105)
>       at 
> reactor.core.publisher.MonoFromPublisher.subscribe(MonoFromPublisher.java:55)
>       at reactor.core.publisher.Mono.subscribe(Mono.java:4087)
>       at 
> reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:124)
>       at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
>       at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> {code}
> In order not to miss updates, SelectedMailboxImpl starts processing events 
> before have completed it's initialization. Thus, if a concurrent mailbox 
> operation happens, the `event` method can be executed before the 
> applicableFlags variable is initialized. Leading to the above null pointer 
> exception.
> We should rely on indempoteance of the add only set (applicableFlags) to keep 
> track of applicable flags changes during the initialization. Merging them 
> with the one being stored ensures the data is up to date.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
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