[ https://issues.apache.org/jira/browse/NIFI-2199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michal Klempa updated NIFI-2199: -------------------------------- Component/s: Core Framework > NiFi cannot be restarted through SSH (nifi.sh hangs) > ---------------------------------------------------- > > Key: NIFI-2199 > URL: https://issues.apache.org/jira/browse/NIFI-2199 > Project: Apache NiFi > Issue Type: Bug > Components: Core Framework > Affects Versions: 0.5.1, 0.7.0, 0.6.1 > Reporter: Michal Klempa > Priority: Minor > Labels: initscript > > When NiFi is to restarted using SSH from remote host, nifi.sh causes SSH to > hang on open io streams. > Steps to reproduce: > 1. HostA - NiFi instalation > 2. HostB - client machine > 3. log to HostB > 4. issue a command > {code} > ssh root@HostA /etc/init.d/nifi restart > {code} > Expected behavior: NiFi is restarted, SSH command exits with 0 > Actual behavior: NiFi is restarted, SSH command hang on > This seems to be somehow related to SSH handling IO streams of process. Seems > like detached NiFi java process does not close stdin/out/err (i do not know > precisely) leading to sshd waiting for some input/output to come to client. > I was able to do a quick&dirty fix in nifi.sh as follows: > 1. on existing nifi installation, in file /etc/init.d/nifi find the line > {code} > (cd "${NIFI_HOME}" && ${sudo_cmd_prefix} "${JAVA}" -cp > "${BOOTSTRAP_CLASSPATH}" -Xms12m -Xmx24m > -Dorg.apache.nifi.bootstrap.config.file="${BOOTSTRAP_CONF}" > org.apache.nifi.bootstrap.RunNiFi $@ &) > {code} > its line number 214 (true branch of if [ "$1"] = "start"] condition). > 2. replace it by line: > {code} > (cd "${NIFI_HOME}" && ${sudo_cmd_prefix} "${JAVA}" -cp > "${BOOTSTRAP_CLASSPATH}" -Xms12m -Xmx24m > -Dorg.apache.nifi.bootstrap.config.file="${BOOTSTRAP_CONF}" > org.apache.nifi.bootstrap.RunNiFi $@ > /dev/null 2>&1 < /dev/null &) > {code} > This simply redirects stdin from /dev/null to NiFi java process and redirects > stdout/err to /dev/null letting SSH to close the session. > After applying this fix, I am able to restart NiFi remotely using SSH. > Use case for this scenario: When Flow Manager develop flow.xml.gz on > localhost/testing environments, usually deployment to production environment > is handled by jenkins/bamboo CI tools. These tools need to log in, upload new > flow.xml.gz and restart NiFi. All remotely using SSH. > If somebody can advice me where in the source code is this line of code > located, I can prepare a pull request for this quick&dirty fix. > But. Maybe we may want to go further and investigate what to do with IO > streams inside Java... -- This message was sent by Atlassian JIRA (v6.3.4#6332)