Mark Payne created NIFI-11681:
---------------------------------
Summary: When Processor is Terminated, the thread is interrupted
before the ProcessSession is terminated
Key: NIFI-11681
URL: https://issues.apache.org/jira/browse/NIFI-11681
Project: Apache NiFi
Issue Type: Bug
Components: Core Framework
Reporter: Mark Payne
Assignee: Mark Payne
Fix For: 1.latest, 2.latest
When a Processor is Terminated, we notify the session that it is terminated.
This rolls back the session and causes any subsequent calls into the session or
its InputStream / OutputStream to throw a TerminatedTaskException.
Additionally, it interrupts any active threads in the Processor.
However, it does these in the opposite order. It interrupts the Processor
thread first.
As a result, it can interrupt the Processor thread, which allows the Processor
to continue on and call into the Process Session, before the Process Session is
terminated.
This can cause the interrupted thread to transfer FlowFiles, etc. after being
interrupted.
This is the cause of the frequent failures that we've seen in the
DynamicClassPathModificationIT system test:
{{DynamicClassPathModificationIT.testSuccessAfterTerminate » Timeout
testSuccessAfterTerminate() timed out after 5 minutes}}
We need to mark the session as terminated before interrupting the thread, so
that any calls into the session will fail after interrupting the processor's
threads.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)