Tamas Palfy created NIFI-7286:
---------------------------------

             Summary: ListenTCPRecord doesn't release port when stopping + 
terminating while running
                 Key: NIFI-7286
                 URL: https://issues.apache.org/jira/browse/NIFI-7286
             Project: Apache NiFi
          Issue Type: Bug
            Reporter: Tamas Palfy


*Reproduction steps*
# Set '{{ListenTCPRecord.Read Timeout}}' property to manageable value (like 120 
second)
# Start {{ListenTCPRecord}}, listen on port XXX
# {{telnet HOST XXX}} (This will open and keep a connection to that port)
# Stop {{ListenTCPRecord}} while connection is open (After that, notice the 2 
active threads on the processor)
# Terminate {{ListenTCPRecord}}
# Now any process (be it {{ListenTCPRecord}} or {{ListenTCP}}) that tries to 
listen on port XXX will report an {{"Address already in use"}} error

*Root cause*
{{ListenTCPRecord}} is trying to do cleanup in an {{@OnStopped}} method. The 
problem is that these methods won't be called while there are still running 
worker threads. When the processor is terminated, it eliminates the cleanup 
thread as well, so the cleanup never happens.
{{ListenTCP}} for example doesn't exhibit this issue because its cleanup method 
is not annotated with {{@OnStopped}} but with {{@OnUnscheduled}}.

*Fix*
The solution is fairly simple: we just need to annotate the {{ListenTCPRecord}} 
cleanup method with {{@OnUnscheduled}} instead of {{@OnStopped}}.



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

Reply via email to