Repository: ambari Updated Branches: refs/heads/branch-2.5 1bd562a18 -> 964c56e7a refs/heads/trunk 28d783486 -> e3b9a9f80
AMBARI-19000. Ambari-server fails to restart with --debug if it is already running (aonishuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e3b9a9f8 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e3b9a9f8 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e3b9a9f8 Branch: refs/heads/trunk Commit: e3b9a9f804537796fa46273b378935a14b75bb33 Parents: 28d7834 Author: Andrew Onishuk <aonis...@hortonworks.com> Authored: Wed Nov 30 17:07:22 2016 +0200 Committer: Andrew Onishuk <aonis...@hortonworks.com> Committed: Wed Nov 30 17:07:22 2016 +0200 ---------------------------------------------------------------------- ambari-server/src/main/python/ambari-server.py | 12 +++++++++++- .../src/main/python/ambari_server/serverUtils.py | 11 +++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/e3b9a9f8/ambari-server/src/main/python/ambari-server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/python/ambari-server.py b/ambari-server/src/main/python/ambari-server.py index 41b2234..21bd0bb 100755 --- a/ambari-server/src/main/python/ambari-server.py +++ b/ambari-server/src/main/python/ambari-server.py @@ -35,7 +35,7 @@ from ambari_commons.os_utils import remove_file from ambari_server.BackupRestore import main as BackupRestore_main from ambari_server.dbConfiguration import DATABASE_NAMES, LINUX_DBMS_KEYS_LIST from ambari_server.serverConfiguration import configDefaults, get_ambari_properties, PID_NAME -from ambari_server.serverUtils import is_server_runing, refresh_stack_hash +from ambari_server.serverUtils import is_server_runing, refresh_stack_hash, wait_for_server_to_stop from ambari_server.serverSetup import reset, setup, setup_jce_policy from ambari_server.serverUpgrade import upgrade, upgrade_stack, set_current from ambari_server.setupHttps import setup_https, setup_truststore @@ -63,6 +63,8 @@ logger = logging.getLogger() formatstr = "%(levelname)s %(asctime)s %(filename)s:%(lineno)d - %(message)s" +SERVER_STOP_TIMEOUT = 30 + class UserActionPossibleArgs(object): def __init__(self, i_fn, i_possible_args_numbers, *args, **kwargs): self.fn = i_fn @@ -166,6 +168,14 @@ def stop(args): except OSError, e: print_info_msg("Unable to stop Ambari Server - " + str(e)) return + + print "Waiting for server stop..." + logger.info("Waiting for server stop...") + + if not wait_for_server_to_stop(SERVER_STOP_TIMEOUT): + print "Ambari-server failed to stop" + logger.info("Ambari-server failed to stop") + pid_file_path = os.path.join(configDefaults.PID_DIR, PID_NAME) os.remove(pid_file_path) print "Ambari Server stopped" http://git-wip-us.apache.org/repos/asf/ambari/blob/e3b9a9f8/ambari-server/src/main/python/ambari_server/serverUtils.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/python/ambari_server/serverUtils.py b/ambari-server/src/main/python/ambari_server/serverUtils.py index 3af233c..4621646 100644 --- a/ambari-server/src/main/python/ambari_server/serverUtils.py +++ b/ambari-server/src/main/python/ambari_server/serverUtils.py @@ -19,6 +19,7 @@ limitations under the License. ''' import os +import time from ambari_commons.exceptions import FatalException, NonFatalException from ambari_commons.logging_utils import get_verbose from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl @@ -62,6 +63,16 @@ def is_server_runing(): return False, None +def wait_for_server_to_stop(wait_timeout): + start_time = time.time() + is_timeout = lambda: time.time() - start_time > wait_timeout + + while is_server_runing()[0] and not is_timeout(): + time.sleep(0.1) + + return not is_timeout() + + @OsFamilyFuncImpl(OSConst.WINSRV_FAMILY) def is_server_runing(): from ambari_commons.os_windows import SERVICE_STATUS_STARTING, SERVICE_STATUS_RUNNING, SERVICE_STATUS_STOPPING, \