WestCoast_BC
asked on
Why is my call to CFPOP sometimes causing the error: java.lang.NullPointerException
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" />
What does your debug log look like when the error happens?
ASKER
I haven't been able to reproduce since I added debug="true". As soon as it happens again I will look at the log file
Okey-doke.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Hey Charlie,
Thanks for chiming in. This member has a very similar open question where CFPOP was sometimes returning a message indicating "Folder is not open" which sounds almost like the connection is dropping. My guess is that these two are just different symptoms of the same root problem, and it's just happening at different points in the process. Just my guess, though.
Thanks for chiming in. This member has a very similar open question where CFPOP was sometimes returning a message indicating "Folder is not open" which sounds almost like the connection is dropping. My guess is that these two are just different symptoms of the same root problem, and it's just happening at different points in the process. Just my guess, though.
ASKER
I am trying to figure out if my other error, Folder is not open, is related to this one. Unfortunately I have not been able to reproduce that error and I am trying to figure out if the nullpointerexception is related.
I will add some dumping of variables when the error occurs.
Thank you all for your help.
I will add some dumping of variables when the error occurs.
Thank you all for your help.
Thanks, to both of you. Let's see how things shake out. :-)
<cfpop action="getall" uid="#mailUID#"
What is the value and the source of #mailUID#? I mention it because the error seems to occur when comparing message id's. It would be a good idea to log that value, so if the error occurs again you can search the debug log for activity related to those message id(s).
Also, is there another process that removes messages from this same mailbox?
ASKER
I have added code to log the mailUID and I have added debug to the CFPOP calls. So far I have not yet been able to reproduce either of my bugs. As soon as I do and I learn something I will post it here.
Thank you for all of your help
Thank you for all of your help
Update
Sounds like a good plan.
Sounds like a good plan.
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.
ASKER
In this case I do not believe there are any processes that removes the message from the same mailbox. I am still no longer able to reproduce this.
I think Charlie might have the right answer here if it's been this long without showing up again - the recompiling changed something to make it work. Just my two cents - you might want to just accept his answer and if the error pops up again, just open a new question.
@WestCoast_BC - That was just one possibility mentioned. But you probably have other irons in the fire. Like gr8gonzo said, keep monitoring and open a new thread when it happens again.