AMBARI-22594. Livy server start fails during EU with 'Address already in use' 
error (dlysnichenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/86a99f20
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/86a99f20
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/86a99f20

Branch: refs/heads/branch-3.0-perf
Commit: 86a99f202614ef9e2022528f011fcd12442e751b
Parents: 620543c
Author: Lisnichenko Dmitro <dlysniche...@hortonworks.com>
Authored: Tue Dec 5 19:32:39 2017 +0200
Committer: Lisnichenko Dmitro <dlysniche...@hortonworks.com>
Committed: Tue Dec 5 19:32:39 2017 +0200

----------------------------------------------------------------------
 .../SPARK/1.2.1/package/scripts/livy_service.py   | 18 ++++++++++--------
 .../SPARK/1.2.1/package/scripts/params.py         |  2 ++
 .../SPARK/2.2.0/package/scripts/livy_service.py   | 13 ++++++++++---
 .../SPARK/2.2.0/package/scripts/params.py         |  2 ++
 .../SPARK2/2.0.0/package/scripts/livy2_service.py | 11 +++++++++--
 .../SPARK2/2.0.0/package/scripts/params.py        |  2 ++
 6 files changed, 35 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/86a99f20/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/livy_service.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/livy_service.py
 
b/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/livy_service.py
index a78f50c..cce2148 100644
--- 
a/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/livy_service.py
+++ 
b/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/livy_service.py
@@ -20,27 +20,29 @@ limitations under the License.
 
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import File, Execute
+from resource_management.libraries.functions import get_user_call_output
 import threading
 
 def livy_service(name, upgrade_type=None, action=None):
   import params
 
+  livyserver_no_op_test = format(
+    'ls {livy_server_pid_file} >/dev/null 2>&1 && ps -p `cat 
{livy_server_pid_file}` >/dev/null 2>&1')
   if action == 'start':
-    livyserver_no_op_test = format(
-      'ls {livy_server_pid_file} >/dev/null 2>&1 && ps -p `cat 
{livy_server_pid_file}` >/dev/null 2>&1')
     Execute(format('{livy_server_start}'),
             user=params.livy_user,
             environment={'JAVA_HOME': params.java_home},
             not_if=livyserver_no_op_test)
 
   elif action == 'stop':
+    pid = get_user_call_output.get_user_call_output(
+      format("! test -f {livy_server_pid_file} ||  cat 
{livy_server_pid_file}"), user=params.livy_user)[1]
+    pid = pid.replace("\n", " ")
     Execute(format('{livy_server_stop}'),
             user=params.livy_user,
+            only_if=livyserver_no_op_test,
+            timeout=10,
+            on_timeout=format("! ( {livyserver_no_op_test} ) || {sudo} -H -E 
kill -9 {pid}"),
             environment={'JAVA_HOME': params.java_home}
             )
-    File(params.livy_server_pid_file,
-         action="delete"
-         )
-
-
-
+    File(params.livy_server_pid_file, action="delete")

http://git-wip-us.apache.org/repos/asf/ambari/blob/86a99f20/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/params.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/params.py
 
b/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/params.py
index 691ca2c..726a886 100644
--- 
a/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/params.py
+++ 
b/ambari-server/src/main/resources/common-services/SPARK/1.2.1/package/scripts/params.py
@@ -22,6 +22,7 @@ import socket
 import status_params
 
 from setup_spark import *
+from ambari_commons.constants import AMBARI_SUDO_BINARY
 from resource_management.libraries.functions.stack_features import 
check_stack_feature
 from resource_management.libraries.functions.stack_features import 
get_stack_feature_version
 from resource_management.libraries.functions.constants import StackFeature
@@ -48,6 +49,7 @@ SERVER_ROLE_DIRECTORY_MAP = {
   'LIVY_CLIENT' : 'livy-client'
 }
 
+sudo = AMBARI_SUDO_BINARY
 component_directory = 
Script.get_component_from_role(SERVER_ROLE_DIRECTORY_MAP, "SPARK_CLIENT")
 
 config = Script.get_config()

http://git-wip-us.apache.org/repos/asf/ambari/blob/86a99f20/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/livy_service.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/livy_service.py
 
b/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/livy_service.py
index 45201db..273b056 100644
--- 
a/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/livy_service.py
+++ 
b/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/livy_service.py
@@ -20,23 +20,30 @@ limitations under the License.
 
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import File, Execute
+from resource_management.libraries.functions import get_user_call_output
 import threading
 
 def livy_service(name, upgrade_type=None, action=None):
   import params
 
+  livyserver_no_op_test = format(
+    'ls {livy_server_pid_file} >/dev/null 2>&1 && ps -p `cat 
{livy_server_pid_file}` >/dev/null 2>&1')
   if action == 'start':
-    livyserver_no_op_test = format(
-      'ls {livy_server_pid_file} >/dev/null 2>&1 && ps -p `cat 
{livy_server_pid_file}` >/dev/null 2>&1')
     Execute(format('{livy_server_start}'),
             user=params.livy_user,
             environment={'JAVA_HOME': params.java_home},
             not_if=livyserver_no_op_test
-    )
+            )
 
   elif action == 'stop':
+    pid = get_user_call_output.get_user_call_output(
+      format("! test -f {livy_server_pid_file} ||  cat 
{livy_server_pid_file}"), user=params.livy_user)[1]
+    pid = pid.replace("\n", " ")
     Execute(format('{livy_server_stop}'),
             user=params.livy_user,
+            only_if=livyserver_no_op_test,
+            timeout=10,
+            on_timeout=format("! ( {livyserver_no_op_test} ) || {sudo} -H -E 
kill -9 {pid}"),
             environment={'JAVA_HOME': params.java_home}
             )
     File(params.livy_server_pid_file,

http://git-wip-us.apache.org/repos/asf/ambari/blob/86a99f20/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/params.py
 
b/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/params.py
index 1d36a75..74b1b6c 100644
--- 
a/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/params.py
+++ 
b/ambari-server/src/main/resources/common-services/SPARK/2.2.0/package/scripts/params.py
@@ -21,6 +21,7 @@ limitations under the License.
 import socket
 
 import status_params
+from ambari_commons.constants import AMBARI_SUDO_BINARY
 from resource_management.libraries.functions.stack_features import 
check_stack_feature
 from resource_management.libraries.functions.constants import StackFeature
 from resource_management.libraries.functions import conf_select, stack_select
@@ -45,6 +46,7 @@ SERVER_ROLE_DIRECTORY_MAP = {
 
 }
 
+sudo = AMBARI_SUDO_BINARY
 component_directory = 
Script.get_component_from_role(SERVER_ROLE_DIRECTORY_MAP, "SPARK_CLIENT")
 
 config = Script.get_config()

http://git-wip-us.apache.org/repos/asf/ambari/blob/86a99f20/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/livy2_service.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/livy2_service.py
 
b/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/livy2_service.py
index 0d60cf4..dfadd84 100644
--- 
a/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/livy2_service.py
+++ 
b/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/livy2_service.py
@@ -20,14 +20,15 @@ limitations under the License.
 
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import File, Execute
+from resource_management.libraries.functions import get_user_call_output
 import threading
 
 def livy2_service(name, upgrade_type=None, action=None):
   import params
 
+  livyserver_no_op_test = format(
+    'ls {livy2_server_pid_file} >/dev/null 2>&1 && ps -p `cat 
{livy2_server_pid_file}` >/dev/null 2>&1')
   if action == 'start':
-    livyserver_no_op_test = format(
-      'ls {livy2_server_pid_file} >/dev/null 2>&1 && ps -p `cat 
{livy2_server_pid_file}` >/dev/null 2>&1')
     Execute(format('{livy2_server_start}'),
             user=params.livy2_user,
             environment={'JAVA_HOME': params.java_home},
@@ -35,8 +36,14 @@ def livy2_service(name, upgrade_type=None, action=None):
     )
 
   elif action == 'stop':
+    pid = get_user_call_output.get_user_call_output(
+      format("! test -f {livy2_server_pid_file} ||  cat 
{livy2_server_pid_file}"), user=params.livy2_user)[1]
+    pid = pid.replace("\n", " ")
     Execute(format('{livy2_server_stop}'),
             user=params.livy2_user,
+            only_if=livyserver_no_op_test,
+            timeout=10,
+            on_timeout=format("! ( {livyserver_no_op_test} ) || {sudo} -H -E 
kill -9 {pid}"),
             environment={'JAVA_HOME': params.java_home}
             )
     File(params.livy2_server_pid_file,

http://git-wip-us.apache.org/repos/asf/ambari/blob/86a99f20/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/params.py
 
b/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/params.py
index 3cf1082..c7d7693 100755
--- 
a/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/params.py
+++ 
b/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/package/scripts/params.py
@@ -21,6 +21,7 @@ limitations under the License.
 import socket
 
 import status_params
+from ambari_commons.constants import AMBARI_SUDO_BINARY
 from resource_management.libraries.functions.stack_features import 
check_stack_feature
 from resource_management.libraries.functions.constants import StackFeature
 from resource_management.libraries.functions import conf_select, stack_select
@@ -44,6 +45,7 @@ SERVER_ROLE_DIRECTORY_MAP = {
 
 }
 
+sudo = AMBARI_SUDO_BINARY
 component_directory = 
Script.get_component_from_role(SERVER_ROLE_DIRECTORY_MAP, "SPARK2_CLIENT")
 
 config = Script.get_config()

Reply via email to