I am trying to figure out why my call to CFPOP is sometimes giving me the error:
java.lang.NullPointerException
ucee.runtime.exp.NativeException: java.lang.NullPointerException at java.base/java.lang.String$CaseInsensitiveComparator.compare(String.java:1225) at java.base/java.lang.String$CaseInsensitiveComparator.compare(String.java:1218) at java.base/java.lang.String.compareToIgnoreCase(String.java:1258) at lucee.runtime.op.Operator.compare(Operator.java:438) at lucee.runtime.net.mail.MailClient.contains(MailClient.java:656) at lucee.runtime.net.mail.MailClient.getMessages(MailClient.java:421) at lucee.runtime.net.mail.MailClient.getMails(MailClient.java:318) at lucee.runtime.tag._Mail.doStartTag(_Mail.java:269) at d1_cfm$cf$m61.call(/d1.cfm:91) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1034) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:926) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:907) at application_cfc$cf$ijr.udfCall(/Application.cfc:449) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:106) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:344) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:217) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:684) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:572) at lucee.runtime.ComponentImpl.call(ComponentImpl.java:1911) at lucee.runtime.listener.ModernAppListener.call(ModernAppListener.java:437) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:216) at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:44) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2460) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2450) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2421) at lucee.runtime.engine.Request.exe(Request.java:45) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1179) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1125) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:479) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NullPointerException ... 52 more
My call to CFPOP is the following:
<cfpop action="getall" uid="#mailUID#" name="qMessage" server="#REQUEST.Pop.Server#" username="#REQUEST.Pop.Username#" password="#REQUEST.Pop.Password#" attachmentpath="#ExpandPath( '/custom/emailattachments/' )#" generateuniquefilenames="true" debug="true" />
<cfpop action="getall" uid="#mailUID#"
Also, is there another process that removes messages from this same mailbox?BTW, the reason I asked is to get a better picture of how that cfpop fits into your overall process. While the NPE might be caused by some transient issue with the mail server, if you're using threads it could also suggest some sort of race condition. Especially as the error is sporadic. (Race conditions are notoriously difficult to reproduce). So it would help to see a bit more of the overall code to get an understanding of how the mailbox is being accessed from CF.