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-feature-AMBARI-21674 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()