[ https://issues.apache.org/jira/browse/NIFI-7286?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tamas Palfy reassigned NIFI-7286: --------------------------------- Assignee: Tamas Palfy > 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 > Assignee: Tamas Palfy > Priority: Major > > *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)