[
https://issues.apache.org/jira/browse/NIFI-1905?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Grande updated NIFI-1905:
--------------------------------
Description:
Consider the attached template. There is an ExecuteProcess which wraps a python
script (listed below).
STR:
* start ListenTcp
* start ExecuteProcess
* stop ExecuteProcess
Expected: the ExecuteProcess component terminates successfully
Actual: there's always a thread running (1 displayed in the top-right corner of
the processor)
The thread will only go away if the underlying command crashes. It's easy to
replicate by stopping ListenTcp - the script will fail with a socket connection
error and quit.
I have been looking into the ExecuteProcess source, and it looks like
OnUnscheduled must also invoke Process.destroy() in addition to terminating the
stdio/stderr I/O threads, but there's nothing like that anywhere.
{code}
import serial
import socket
# set up the serial connection speed
ser = serial.Serial('/dev/ttyUSB0', 115200)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost',3456))
# main loop
while 1:
data = ser.readline()
s.sendall(data)
{code}
was:
Consider the attached template. There is an ExecuteProcess which wraps a python
script like the one below.
* start ListenTcp
* start ExecuteProcess
* stop ExecuteProcess
Expected: the ExecuteProcess component terminates successfully
Actual: there's always a thread running (1 displayed in the top-right corner of
the processor)
The thread will only go away if the underlying command crashes. It's easy to
replicate by stopping ListenTcp - the script will fail with a socket connection
error and quit.
I have been looking into the ExecuteProcess source, and it looks like
OnUnscheduled must also invoke Process.destroy() in addition to terminating the
stdio/stderr I/O threads, but there's nothing like that anywhere.
{code}
import serial
import socket
# set up the serial connection speed
ser = serial.Serial('/dev/ttyUSB0', 115200)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost',3456))
# main loop
while 1:
data = ser.readline()
s.sendall(data)
{code}
> Stop action doesn't invoke ExecuteProcess.destroy()
> ---------------------------------------------------
>
> Key: NIFI-1905
> URL: https://issues.apache.org/jira/browse/NIFI-1905
> Project: Apache NiFi
> Issue Type: Bug
> Affects Versions: 0.6.1
> Environment: Raspberry Pi 3
> Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
> Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)
> Reporter: Andrew Grande
> Priority: Critical
> Attachments: NIFI-1905.xml
>
>
> Consider the attached template. There is an ExecuteProcess which wraps a
> python script (listed below).
> STR:
> * start ListenTcp
> * start ExecuteProcess
> * stop ExecuteProcess
> Expected: the ExecuteProcess component terminates successfully
> Actual: there's always a thread running (1 displayed in the top-right corner
> of the processor)
> The thread will only go away if the underlying command crashes. It's easy to
> replicate by stopping ListenTcp - the script will fail with a socket
> connection error and quit.
> I have been looking into the ExecuteProcess source, and it looks like
> OnUnscheduled must also invoke Process.destroy() in addition to terminating
> the stdio/stderr I/O threads, but there's nothing like that anywhere.
> {code}
> import serial
> import socket
> # set up the serial connection speed
> ser = serial.Serial('/dev/ttyUSB0', 115200)
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> s.connect(('localhost',3456))
> # main loop
> while 1:
> data = ser.readline()
> s.sendall(data)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)