You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Benoit Tellier (Jira)" <se...@james.apache.org> on 2020/07/16 05:25:00 UTC
[jira] [Created] (JAMES-3309) NPE when unselecting during a FETCH
Benoit Tellier created JAMES-3309:
-------------------------------------
Summary: NPE when unselecting during a FETCH
Key: JAMES-3309
URL: https://issues.apache.org/jira/browse/JAMES-3309
Project: James Server
Issue Type: Bug
Components: IMAPServer
Affects Versions: master
Reporter: Benoit Tellier
We encountered the following error:
{code:java}
t action FETCH
? fetchedData FetchData{flags=true, uid=true, internalDate=false, size=false, envelope=false, body=false, bodyStructure=false, setSeen=false, bodyElements=[], modSeq=false, changedSince=-1, vanished=false}
t host james-69956575bc-jlsgx
? idSet Optional[[IdRange ( 1->9223372036854775807 )]]
t ip 10.2.0.0
t logger org.apache.james.imap.processor.AbstractMailboxProcessor
t message Unexpected error during IMAP processing
t protocol IMAP
t selectedMailbox 1e54f590-49a4-11ea-b268-5bd54f0fe5f2
t sessionId SID-rxzyjwusjzrc
t severity ERROR
t stacktrace java.lang.NullPointerException: null
at org.apache.james.imap.processor.fetch.FetchResponseBuilder.build(FetchResponseBuilder.java:117)
at org.apache.james.imap.processor.fetch.FetchProcessor.processMessageRanges(FetchProcessor.java:153)
at org.apache.james.imap.processor.fetch.FetchProcessor.processRequest(FetchProcessor.java:107)
at org.apache.james.imap.processor.fetch.FetchProcessor.processRequest(FetchProcessor.java:53)
at org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:100)
at org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:77)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:58)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
at org.apache.james.imapserver.netty.ImapChannelUpstreamHandler.messageReceived(ImapChannelUpstreamHandler.java:198)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43)
at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67)
at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:314)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
t thread imapserver-executor-451
? useUid true
{code}
It turns out ImapSession::getSelectedMailbox can return null when the mailbox is deselected.
Furthermore, data races can occurs upon selected mailbox switches.
In FetchReponseBuilder we need to rely on the mailbox selected when the command was first issued.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org