Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Jan 2015 22:49:42 +0000 (UTC)
From:      Dmitry Sivachenko <demon@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r376366 - in head/devel/hadoop2: . files
Message-ID:  <201501052249.t05MngcW091090@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: demon
Date: Mon Jan  5 22:49:41 2015
New Revision: 376366
URL: https://svnweb.freebsd.org/changeset/ports/376366
QAT: https://qat.redports.org/buildarchive/r376366/

Log:
  Use ssid instead of Linux setsid(1): without it if task process spawns a
  subprocess (common case if task process is a shell script) and job is being
  killed with mapred job -kill <...>, then subprocess will not die and remain
  running orphaned.

Added:
  head/devel/hadoop2/files/patch-hadoop-common-project-hadoop-common-src-main-java-org-apache-hadoop-util-Shell.java   (contents, props changed)
  head/devel/hadoop2/files/patch-hadoop-mapreduce-client-core-src-main-java-org-apache-hadoop-mapred-TaskLog.java   (contents, props changed)
  head/devel/hadoop2/files/patch-hadoop-mapreduce-client-core-src-main-java-org-apache-hadoop-mapreduce-util-ProcessTree.java   (contents, props changed)
  head/devel/hadoop2/files/patch-src-main-java-org-apache-hadoop-yarn-server-nodemanager-DefaultContainerExecutor.java   (contents, props changed)
Modified:
  head/devel/hadoop2/Makefile

Modified: head/devel/hadoop2/Makefile
==============================================================================
--- head/devel/hadoop2/Makefile	Mon Jan  5 22:36:15 2015	(r376365)
+++ head/devel/hadoop2/Makefile	Mon Jan  5 22:49:41 2015	(r376366)
@@ -7,7 +7,7 @@
 # no problems encountered so far.  Thanks.
 PORTNAME=	hadoop
 PORTVERSION=	2.4.1
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	devel java
 MASTER_SITES=	${MASTER_SITE_APACHE} \
 		LOCAL/demon/ \
@@ -28,7 +28,8 @@ BUILD_DEPENDS=	${LOCALBASE}/share/java/m
 		cmake:${PORTSDIR}/devel/cmake \
 		${LOCALBASE}/protobuf25/bin/protoc:${PORTSDIR}/devel/protobuf25
 LIB_DEPENDS=	libsnappy.so:${PORTSDIR}/archivers/snappy
-RUN_DEPENDS=	bash:${PORTSDIR}/shells/bash
+RUN_DEPENDS=	bash:${PORTSDIR}/shells/bash \
+		ssid:${PORTSDIR}/sysutils/ssid
 
 CONFLICTS_INSTALL=	apache-hadoop-1*
 

Added: head/devel/hadoop2/files/patch-hadoop-common-project-hadoop-common-src-main-java-org-apache-hadoop-util-Shell.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/hadoop2/files/patch-hadoop-common-project-hadoop-common-src-main-java-org-apache-hadoop-util-Shell.java	Mon Jan  5 22:49:41 2015	(r376366)
@@ -0,0 +1,21 @@
+--- ./hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java.orig	2014-06-21 09:40:07.000000000 +0400
++++ ./hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java	2015-01-06 01:21:22.000000000 +0300
+@@ -348,15 +348,15 @@ abstract public class Shell {
+     ShellCommandExecutor shexec = null;
+     boolean setsidSupported = true;
+     try {
+-      String[] args = {"setsid", "bash", "-c", "echo $$"};
++      String[] args = {"ssid", "bash", "-c", "echo $$"};
+       shexec = new ShellCommandExecutor(args);
+       shexec.execute();
+     } catch (IOException ioe) {
+-      LOG.debug("setsid is not available on this machine. So not using it.");
++      LOG.debug("ssid is not available on this machine. So not using it.");
+       setsidSupported = false;
+     } finally { // handle the exit code
+       if (LOG.isDebugEnabled()) {
+-        LOG.debug("setsid exited with exit code "
++        LOG.debug("ssid exited with exit code "
+                  + (shexec != null ? shexec.getExitCode() : "(null executor)"));
+       }
+     }

Added: head/devel/hadoop2/files/patch-hadoop-mapreduce-client-core-src-main-java-org-apache-hadoop-mapred-TaskLog.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/hadoop2/files/patch-hadoop-mapreduce-client-core-src-main-java-org-apache-hadoop-mapred-TaskLog.java	Mon Jan  5 22:49:41 2015	(r376366)
@@ -0,0 +1,11 @@
+--- ./hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/TaskLog.java.orig	2015-01-06 01:14:31.000000000 +0300
++++ ./hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/TaskLog.java	2015-01-06 01:14:47.000000000 +0300
+@@ -538,7 +538,7 @@ public class TaskLog {
+       mergedCmd.append("(");
+     } else if(ProcessTree.isSetsidAvailable && useSetsid &&
+         !Shell.WINDOWS) {
+-      mergedCmd.append("exec setsid ");
++      mergedCmd.append("exec ssid ");
+     } else {
+       mergedCmd.append("exec ");
+     }

Added: head/devel/hadoop2/files/patch-hadoop-mapreduce-client-core-src-main-java-org-apache-hadoop-mapreduce-util-ProcessTree.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/hadoop2/files/patch-hadoop-mapreduce-client-core-src-main-java-org-apache-hadoop-mapreduce-util-ProcessTree.java	Mon Jan  5 22:49:41 2015	(r376366)
@@ -0,0 +1,20 @@
+--- ./hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/util/ProcessTree.java.orig	2015-01-06 01:16:49.000000000 +0300
++++ ./hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/util/ProcessTree.java	2015-01-06 01:17:24.000000000 +0300
+@@ -54,14 +54,14 @@ public class ProcessTree {
+     ShellCommandExecutor shexec = null;
+     boolean setsidSupported = true;
+     try {
+-      String[] args = {"setsid", "bash", "-c", "echo $$"};
++      String[] args = {"ssid", "bash", "-c", "echo $$"};
+       shexec = new ShellCommandExecutor(args);
+       shexec.execute();
+     } catch (IOException ioe) {
+-      LOG.warn("setsid is not available on this machine. So not using it.");
++      LOG.warn("ssid is not available on this machine. So not using it.");
+       setsidSupported = false;
+     } finally { // handle the exit code
+-      LOG.info("setsid exited with exit code " + shexec.getExitCode());
++      LOG.info("ssid exited with exit code " + shexec.getExitCode());
+     }
+     return setsidSupported;
+   }

Added: head/devel/hadoop2/files/patch-src-main-java-org-apache-hadoop-yarn-server-nodemanager-DefaultContainerExecutor.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/hadoop2/files/patch-src-main-java-org-apache-hadoop-yarn-server-nodemanager-DefaultContainerExecutor.java	Mon Jan  5 22:49:41 2015	(r376366)
@@ -0,0 +1,11 @@
+--- ./hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java.orig	2015-01-06 01:28:53.000000000 +0300
++++ ./hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java	2015-01-06 01:29:32.000000000 +0300
+@@ -277,7 +277,7 @@ public class DefaultContainerExecutor ex
+       pout.println();
+       pout.println("echo $$ > " + pidFile.toString() + ".tmp");
+       pout.println("/bin/mv -f " + pidFile.toString() + ".tmp " + pidFile);
+-      String exec = Shell.isSetsidAvailable? "exec setsid" : "exec";
++      String exec = Shell.isSetsidAvailable? "exec ssid" : "exec";
+       pout.println(exec + " /bin/bash \"" +
+         launchDst.toUri().getPath().toString() + "\"");
+     }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501052249.t05MngcW091090>