[ 
https://issues.apache.org/jira/browse/NIFI-5894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17833185#comment-17833185
 ] 

René Zeidler edited comment on NIFI-5894 at 4/2/24 12:59 PM:
-------------------------------------------------------------

I encountered the same NPE on NiFi 1.23.2 using a PutFTP processor:
{code:java}
java.lang.NullPointerException: Cannot invoke 
"java.util.Calendar.getTimeInMillis()" because the return value of 
"org.apache.commons.net.ftp.FTPFile.getTimestamp()" is null
    at 
org.apache.nifi.processors.standard.util.FTPTransfer.newFileInfo(FTPTransfer.java:319)
    at 
org.apache.nifi.processors.standard.util.FTPTransfer.getRemoteFileInfo(FTPTransfer.java:382)
    at 
org.apache.nifi.processors.standard.PutFileTransfer.identifyAndResolveConflictFile(PutFileTransfer.java:211)
    at 
org.apache.nifi.processors.standard.PutFileTransfer.onTrigger(PutFileTransfer.java:117)
    at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
    at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1361)
    at 
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:247)
    at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:102)
    at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
    at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
    at 
java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
    at 
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583){code}
The FTP server (a FileZilla FTP server) returned a null timestamp only for a 
certain file. After manually deleting and uploading the file, it now returns 
the correct timestamp, so I can't reproduce the scenario. However, FTP servers 
returning null timestamps seems to be possible, so adding a check for it 
instead of letting the processor fail with an uncaught NPE seems to make sense.

The relevant part of the code hasn't changed in the current main branch, so the 
issue still occurs:

https://github.com/apache/nifi/blob/322deaa23eb5141174bb2c25b97b2a96b2596eac/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/FTPTransfer.java#L321


was (Author: JIRAUSER297247):
I encountered the same NPE on NiFi 1.23.2 using a PutFTP processor:
{code:java}
java.lang.NullPointerException: Cannot invoke 
"java.util.Calendar.getTimeInMillis()" because the return value of 
"org.apache.commons.net.ftp.FTPFile.getTimestamp()" is null
    at 
org.apache.nifi.processors.standard.util.FTPTransfer.newFileInfo(FTPTransfer.java:319)
    at 
org.apache.nifi.processors.standard.util.FTPTransfer.getRemoteFileInfo(FTPTransfer.java:382)
    at 
org.apache.nifi.processors.standard.PutFileTransfer.identifyAndResolveConflictFile(PutFileTransfer.java:211)
    at 
org.apache.nifi.processors.standard.PutFileTransfer.onTrigger(PutFileTransfer.java:117)
    at 
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
    at 
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1361)
    at 
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:247)
    at 
org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:102)
    at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
    at 
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
    at 
java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
    at 
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583){code}

> FTPTransfer NullPointerException - FTPFile.getTimestamp() returns null
> ----------------------------------------------------------------------
>
>                 Key: NIFI-5894
>                 URL: https://issues.apache.org/jira/browse/NIFI-5894
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.8.0
>            Reporter: henning ottesen
>            Assignee: Eric Ulicny
>            Priority: Major
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 2018-12-13 10:34:07,405 WARN [Timer-Driven Process Thread-2] 
> o.a.n.controller.tasks.ConnectableTask Administratively Yielding 
> ListFTP[id=a6cee9c8-0167-1000-2bc2-5e69d2e33af5] due to uncaught Exception: 
> java.lang.NullPointerException java.lang.NullPointerException: null
>       at 
> org.apache.nifi.processors.standard.util.FTPTransfer.newFileInfo(FTPTransfer.java:305)
>       at 
> org.apache.nifi.processors.standard.util.FTPTransfer.getListing(FTPTransfer.java:270)
>       at 
> org.apache.nifi.processors.standard.util.FTPTransfer.getListing(FTPTransfer.java:260)
>       at 
> org.apache.nifi.processors.standard.util.FTPTransfer.getListing(FTPTransfer.java:191)
>       at 
> org.apache.nifi.processors.standard.ListFileTransfer.performListing(ListFileTransfer.java:106)
>       at 
> org.apache.nifi.processor.util.list.AbstractListProcessor.listByTrackingTimestamps(AbstractListProcessor.java:471)
>       at 
> org.apache.nifi.processor.util.list.AbstractListProcessor.onTrigger(AbstractListProcessor.java:413)
>       at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>       at 
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1165)
>       at 
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:203)
>       at 
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>       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)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to