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

ASF GitHub Bot commented on NIFI-1905:
--------------------------------------

Github user aperepel commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/456#discussion_r64040583
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ExecuteProcess.java
 ---
    @@ -181,7 +183,14 @@ public Thread newThread(final Runnable r) {
     
         @OnUnscheduled
         public void shutdownExecutor() {
    -        executor.shutdown();
    +        try {
    +            executor.shutdown();
    +        } finally {
    +            if (this.externalProcess.isAlive()) {
    +                this.getLogger().warn("Interrupting external process since 
it did not finished at the time stop Processor was initiated.");
    --- End diff --
    
    Check for typos and wording, maybe simplify it? How about 'Process hasn't 
terminated on request, forcing the interrupt'? 


> 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
>            Assignee: Oleg Zhurakousky
>            Priority: Critical
>             Fix For: 1.0.0, 0.7.0
>
>         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)

Reply via email to