You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2016/03/31 17:45:35 UTC

ambari git commit: AMBARI-15650. Output short logs summary on start/stop failure (aonishuk)

Repository: ambari
Updated Branches:
  refs/heads/trunk 7a909ade9 -> 017fbf130


AMBARI-15650. Output short logs summary on start/stop failure (aonishuk)


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

Branch: refs/heads/trunk
Commit: 017fbf130f7a3ce880baa11bf6a783f3ca850d78
Parents: 7a909ad
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Thu Mar 31 18:45:27 2016 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Thu Mar 31 18:45:27 2016 +0300

----------------------------------------------------------------------
 .../libraries/functions/__init__.py             |  1 +
 .../libraries/functions/show_logs.py            | 39 +++++++++++++++
 .../libraries/functions/version_select_util.py  |  2 +-
 .../package/scripts/accumulo_service.py         | 13 +++--
 .../0.1.0/package/scripts/ams_service.py        | 22 ++++++---
 .../package/scripts/metadata_server.py          | 30 ++++++++----
 .../FALCON/0.5.0.2.1/package/scripts/falcon.py  | 27 +++++++----
 .../FLUME/1.4.0.2.0/package/scripts/flume.py    | 15 ++++--
 .../0.96.0.2.0/package/scripts/hbase_service.py | 31 +++++++-----
 .../2.1.0.2.0/package/scripts/params_linux.py   |  3 +-
 .../HDFS/2.1.0.2.0/package/scripts/utils.py     | 14 +++++-
 .../0.12.0.2.0/package/scripts/hive_service.py  | 22 ++++++---
 .../package/scripts/webhcat_service.py          | 36 +++++++++-----
 .../0.8.1.2.2/package/scripts/kafka_broker.py   | 23 ++++++---
 .../0.5.0.2.2/package/scripts/knox_gateway.py   | 28 +++++++----
 .../4.0.0.2.0/package/scripts/oozie_service.py  | 21 +++++---
 .../0.4.0/package/scripts/ranger_service.py     | 20 +++++---
 .../0.5.0.2.3/package/scripts/kms_service.py    | 13 ++++-
 .../1.2.0.2.2/package/scripts/spark_service.py  | 51 +++++++++++++-------
 .../STORM/0.9.1.2.1/package/scripts/service.py  | 17 ++++---
 .../YARN/2.1.0.2.0/package/scripts/service.py   | 31 ++++++++----
 .../package/scripts/zookeeper_service.py        | 29 +++++++----
 .../2.0.6/ZOOKEEPER/test_zookeeper_server.py    |  8 ++-
 .../stacks/2.3/ATLAS/test_metadata_server.py    |  3 +-
 24 files changed, 358 insertions(+), 141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-common/src/main/python/resource_management/libraries/functions/__init__.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/__init__.py b/ambari-common/src/main/python/resource_management/libraries/functions/__init__.py
index e886fe4..ff4fddf 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/__init__.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/__init__.py
@@ -43,6 +43,7 @@ from resource_management.libraries.functions.get_lzo_packages import *
 from resource_management.libraries.functions.setup_ranger_plugin import *
 from resource_management.libraries.functions.curl_krb_request import *
 from resource_management.libraries.functions.get_bare_principal import *
+from resource_management.libraries.functions.show_logs import *
 IS_WINDOWS = platform.system() == "Windows"
 
 if IS_WINDOWS:

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-common/src/main/python/resource_management/libraries/functions/show_logs.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/show_logs.py b/ambari-common/src/main/python/resource_management/libraries/functions/show_logs.py
new file mode 100644
index 0000000..bb2e12c
--- /dev/null
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/show_logs.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+"""
+__all__ = ["show_logs"]
+
+from resource_management.core.resources.system import Execute
+from resource_management.libraries.functions.format import format
+
+LAST_LINES_OUTPUT_COUNT = 40
+
+def show_logs(log_dir, user):
+  """
+  This should be used in 'except' block of start or stop Execute of services or of command which checks if start was fine.
+  It allows to give additional debugging information without need to have access to log files.
+  
+  Don't forget to call "raise" after using the function or else the original exception will be masked.
+  """
+  lines_count = LAST_LINES_OUTPUT_COUNT
+  Execute(format("log_files=`find {log_dir} -maxdepth 1 -type f` ; [ ! -z \"$log_files\" ] && tail -n {lines_count} $log_files"),
+          logoutput = True,
+          ignore_failures = True, # if this fails should not overwrite the actual exception
+          user = user, # need to have permissions to read log files
+  )
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py b/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
index 05e6eb6..9122a0e 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
@@ -55,7 +55,7 @@ def get_component_version(stack_name, component_name):
       # This is necessary because Ubuntu returns "stdin: is not a tty", see AMBARI-8088
       with open(tmpfile.name, 'r') as file:
         get_stack_comp_version_cmd = '%s status %s > %s' % (stack_selector_path, component_name, tmpfile.name)
-        code, stdoutdata = shell.call(get_stack_comp_version_cmd)
+        code, stdoutdata = shell.call(get_stack_comp_version_cmd, quiet=True)
         out = file.read()
 
       if code != 0 or out is None:

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
index e71d5af..33d3273 100644
--- a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/package/scripts/accumulo_service.py
@@ -19,6 +19,7 @@ limitations under the License.
 """
 
 from resource_management import *
+from resource_management.libraries.functions.show_logs import show_logs
 import time
 import os
 
@@ -48,10 +49,14 @@ def accumulo_service( name,
       if name == 'monitor' and params.accumulo_monitor_bind_all:
         address = '0.0.0.0'
       daemon_cmd = format("{daemon_script} {role} --address {address} > {log_dir}/accumulo-{role}.out 2>{log_dir}/accumulo-{role}.err & echo $! > {pid_file}")
-      Execute ( daemon_cmd,
-        not_if=as_user(pid_exists, params.accumulo_user),
-        user=params.accumulo_user
-      )
+      try:
+        Execute ( daemon_cmd,
+          not_if=as_user(pid_exists, params.accumulo_user),
+          user=params.accumulo_user
+        )
+      except:
+        show_logs(params.log_dir, params.accumulo_user)
+        raise
 
     elif action == 'stop':
       no_pid_exists = format("! ({pid_exists})")

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams_service.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams_service.py
index c9188c2..eb1b6d7 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams_service.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams_service.py
@@ -19,6 +19,7 @@ limitations under the License.
 """
 
 from resource_management import *
+from resource_management.libraries.functions.show_logs import show_logs
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 from hbase_service import hbase_service
@@ -77,9 +78,13 @@ def ams_service(name, action):
       else:
         daemon_cmd = format("{cmd} start")
 
-      Execute(daemon_cmd,
-              user=params.ams_user
-      )
+      try:
+        Execute(daemon_cmd,
+                user=params.ams_user
+        )
+      except:
+        show_logs(params.ams_collector_log_dir, params.ams_user)
+        raise
 
       pass
     elif action == 'stop':
@@ -97,9 +102,14 @@ def ams_service(name, action):
 
     if action == 'start':
       daemon_cmd = format("{cmd} start")
-      Execute(daemon_cmd,
-              user=params.ams_user
-      )
+      
+      try:
+        Execute(daemon_cmd,
+                user=params.ams_user
+        )
+      except:
+        show_logs(params.ams_monitor_log_dir, params.ams_user)
+        raise      
 
       pass
     elif action == 'stop':

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/package/scripts/metadata_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/package/scripts/metadata_server.py b/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/package/scripts/metadata_server.py
index b6374f9..46c8fd3 100644
--- a/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/package/scripts/metadata_server.py
+++ b/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/package/scripts/metadata_server.py
@@ -19,12 +19,13 @@ limitations under the License.
 from metadata import metadata
 from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import stack_select
-from resource_management import Execute, check_process_status, Script
+from resource_management import Execute, File, check_process_status, Script
 from resource_management.libraries.functions import format
 from resource_management.libraries.functions.version import compare_versions, format_stack_version
 from resource_management.libraries.functions.security_commons import build_expectations, \
   get_params_from_filesystem, validate_security_config_properties, \
   FILE_TYPE_PROPERTIES
+from resource_management.libraries.functions.show_logs import show_logs
 
 class MetadataServer(Script):
 
@@ -54,19 +55,30 @@ class MetadataServer(Script):
 
     daemon_cmd = format('source {params.conf_dir}/atlas-env.sh ; {params.metadata_start_script}')
     no_op_test = format('ls {params.pid_file} >/dev/null 2>&1 && ps -p `cat {params.pid_file}` >/dev/null 2>&1')
-    Execute(daemon_cmd,
-            user=params.metadata_user,
-            not_if=no_op_test
-    )
+    
+    try:
+      Execute(daemon_cmd,
+              user=params.metadata_user,
+              not_if=no_op_test
+      )
+    except:
+      show_logs(params.log_dir, params.metadata_user)
+      raise
 
   def stop(self, env, upgrade_type=None):
     import params
     env.set_params(params)
     daemon_cmd = format('source {params.conf_dir}/atlas-env.sh; {params.metadata_stop_script}')
-    Execute(daemon_cmd,
-            user=params.metadata_user,
-    )
-    Execute (format("rm -f {params.pid_file}"))
+    
+    try:
+      Execute(daemon_cmd,
+              user=params.metadata_user,
+      )
+    except:
+      show_logs(params.log_dir, params.metadata_user)
+      raise
+    
+    File(params.pid_file, action="delete")
 
   def status(self, env):
     import status_params

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
index 7b469d3..46457ad 100644
--- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
+++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py
@@ -31,6 +31,7 @@ from resource_management.core.resources.system import Link
 from resource_management.libraries.script import Script
 from resource_management.libraries.resources import PropertiesFile
 from resource_management.libraries.functions import format
+from resource_management.libraries.functions.show_logs import show_logs
 
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
@@ -179,10 +180,14 @@ def falcon(type, action = None, upgrade_type=None):
     environment_dictionary = { "HADOOP_HOME" : params.hadoop_home_dir }
 
     if action == 'start':
-      Execute(format('{falcon_home}/bin/falcon-start -port {falcon_port}'),
-        user = params.falcon_user,
-        path = params.hadoop_bin_dir,
-        environment=environment_dictionary)
+      try:
+        Execute(format('{falcon_home}/bin/falcon-start -port {falcon_port}'),
+          user = params.falcon_user,
+          path = params.hadoop_bin_dir,
+          environment=environment_dictionary)
+      except:
+        show_logs(params.falcon_log_dir, params.falcon_user)
+        raise
 
       if params.has_atlas:
         atlas_falcon_hook_dir = os.path.join(params.atlas_home_dir, "hook", "falcon")
@@ -195,11 +200,15 @@ def falcon(type, action = None, upgrade_type=None):
               Link(falcon_lib_file_name, to = atlas_falcon_hook_file_name)
 
     if action == 'stop':
-      Execute(format('{falcon_home}/bin/falcon-stop'),
-        user = params.falcon_user,
-        path = params.hadoop_bin_dir,
-        environment=environment_dictionary)
-
+      try:
+        Execute(format('{falcon_home}/bin/falcon-stop'),
+          user = params.falcon_user,
+          path = params.hadoop_bin_dir,
+          environment=environment_dictionary)
+      except:
+        show_logs(params.falcon_log_dir, params.falcon_user)
+        raise
+      
       File(params.server_pid_file, action = 'delete')
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
index b30b122..db52431 100644
--- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
+++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py
@@ -26,6 +26,7 @@ from resource_management.libraries.functions.flume_agent_helper import find_expe
 from resource_management.libraries.functions.flume_agent_helper import await_flume_process_termination
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
+from resource_management.libraries.functions.show_logs import show_logs
 
 @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
 def flume(action = None):
@@ -184,10 +185,15 @@ def flume(action = None):
         # sometimes startup spawns a couple of threads - so only the first line may count
         pid_cmd = as_sudo(('pgrep', '-o', '-u', params.flume_user, '-f', format('^{java_home}.*{agent}.*'))) + \
         " | " + as_sudo(('tee', flume_agent_pid_file)) + "  && test ${PIPESTATUS[0]} -eq 0"
-        Execute(pid_cmd,
-                logoutput=True,
-                tries=20,
-                try_sleep=10)
+        
+        try:
+          Execute(pid_cmd,
+                  logoutput=True,
+                  tries=20,
+                  try_sleep=10)
+        except:
+          show_logs(params.flume_log_dir, None)
+          raise
 
     pass
   elif action == 'stop':
@@ -211,6 +217,7 @@ def flume(action = None):
         Execute(("kill", "-15", pid), sudo=True)    # kill command has to be a tuple
       
       if not await_flume_process_termination(pid_file):
+        show_logs(params.flume_log_dir, None)
         raise Fail("Can't stop flume agent: {0}".format(agent))
         
       File(pid_file, action = 'delete')

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_service.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_service.py
index ef4cd5b..a6904f6 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_service.py
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_service.py
@@ -35,20 +35,29 @@ def hbase_service(
     if action == 'start':
       daemon_cmd = format("{cmd} start {role}")
       
-      Execute ( daemon_cmd,
-        not_if = no_op_test,
-        user = params.hbase_user
-      )
+      try:
+        Execute ( daemon_cmd,
+          not_if = no_op_test,
+          user = params.hbase_user
+        )
+      except:
+        show_logs(params.log_dir, params.hbase_user)
+        raise
     elif action == 'stop':
       daemon_cmd = format("{cmd} stop {role}")
 
-      Execute ( daemon_cmd,
-        user = params.hbase_user,
-        only_if = no_op_test,
-        # BUGFIX: hbase regionserver sometimes hangs when nn is in safemode
-        timeout = 30,
-        on_timeout = format("! ( {no_op_test} ) || {sudo} -H -E kill -9 `{pid_expression}`"),
-      )
+      try:
+        Execute ( daemon_cmd,
+          user = params.hbase_user,
+          only_if = no_op_test,
+          # BUGFIX: hbase regionserver sometimes hangs when nn is in safemode
+          timeout = 30,
+          on_timeout = format("! ( {no_op_test} ) || {sudo} -H -E kill -9 `{pid_expression}`"),
+        )
+      except:
+        show_logs(params.log_dir, params.hbase_user)
+        raise
+      
       File(pid_file,
            action = "delete",
       )

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_linux.py
index d6dec26..d4894ba 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_linux.py
@@ -223,7 +223,8 @@ jn_edits_dir = config['configurations']['hdfs-site']['dfs.journalnode.edits.dir'
 
 dfs_name_dir = config['configurations']['hdfs-site']['dfs.namenode.name.dir']
 
-namenode_dirs_created_stub_dir = format("{hdfs_log_dir_prefix}/{hdfs_user}")
+hdfs_log_dir = format("{hdfs_log_dir_prefix}/{hdfs_user}")
+namenode_dirs_created_stub_dir = hdfs_log_dir
 namenode_dirs_stub_filename = "namenode_dirs_created"
 
 smoke_hdfs_user_dir = format("/user/{smoke_user}")

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/utils.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/utils.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/utils.py
index 339d52a..f9ee40d 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/utils.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/utils.py
@@ -34,6 +34,7 @@ from resource_management.libraries.functions.curl_krb_request import curl_krb_re
 from resource_management.core.exceptions import Fail
 from resource_management.libraries.functions.namenode_ha_utils import get_namenode_states
 from resource_management.libraries.script.script import Script
+from resource_management.libraries.functions.show_logs import show_logs
 
 from zkfc_slave import ZkfcSlave
 
@@ -265,9 +266,18 @@ def service(action=None, name=None, user=None, options="", create_pid_dir=False,
   if action == "start":
     # remove pid file from dead process
     File(pid_file, action="delete", not_if=process_id_exists_command)
-    Execute(daemon_cmd, not_if=process_id_exists_command, environment=hadoop_env_exports)
+    
+    try:
+      Execute(daemon_cmd, not_if=process_id_exists_command, environment=hadoop_env_exports)
+    except:
+      show_logs(params.hdfs_log_dir, user)
+      raise
   elif action == "stop":
-    Execute(daemon_cmd, only_if=process_id_exists_command, environment=hadoop_env_exports)
+    try:
+      Execute(daemon_cmd, only_if=process_id_exists_command, environment=hadoop_env_exports)
+    except:
+      show_logs(params.hdfs_log_dir, user)
+      raise
     File(pid_file, action="delete")
 
 def get_jmx_data(nn_address, modeler_type, metric, encrypted=False, security_enabled=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_service.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_service.py
index 2f94dfb..3aa6536 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_service.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_service.py
@@ -31,6 +31,7 @@ from resource_management.core.exceptions import Fail
 from resource_management.core.shell import as_user
 from resource_management.libraries.functions.hive_check import check_thrift_port_sasl
 from resource_management.libraries.functions import get_user_call_output
+from resource_management.libraries.functions.show_logs import show_logs
 
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 from ambari_commons import OSConst
@@ -100,8 +101,13 @@ def hive_service(name, action='start', upgrade_type=None):
       db_connection_check_command = format(
         "{java64_home}/bin/java -cp {check_db_connection_jar}:{target} org.apache.ambari.server.DBConnectionVerification '{hive_jdbc_connection_url}' {hive_metastore_user_name} {hive_metastore_user_passwd!p} {hive_jdbc_driver}")
       
-      Execute(db_connection_check_command,
+      try:
+        Execute(db_connection_check_command,
               path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin', tries=5, try_sleep=10)
+      except:
+        show_logs(params.hive_log_dir, user)
+        raise
+        
   elif action == 'stop':
 
     daemon_kill_cmd = format("{sudo} kill {pid}")
@@ -116,11 +122,15 @@ def hive_service(name, action='start', upgrade_type=None):
       not_if = format("! ({process_id_exists_command}) || ( sleep {wait_time} && ! ({process_id_exists_command}) )")
     )
 
-    # check if stopped the process, else fail the task
-    Execute(format("! ({process_id_exists_command})"),
-      tries=20,
-      try_sleep=3,
-    )
+    try:
+      # check if stopped the process, else fail the task
+      Execute(format("! ({process_id_exists_command})"),
+        tries=20,
+        try_sleep=3,
+      )
+    except:
+      show_logs(params.hive_log_dir, user)
+      raise
 
     File(pid_file,
          action = "delete"

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_service.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_service.py
index 2553c70..10e0990 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_service.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_service.py
@@ -46,15 +46,23 @@ def webhcat_service(action='start', upgrade_type=None):
 
     daemon_cmd = format('cd {hcat_pid_dir} ; {cmd} start')
     no_op_test = as_user(format('ls {webhcat_pid_file} >/dev/null 2>&1 && ps -p `cat {webhcat_pid_file}` >/dev/null 2>&1'), user=params.webhcat_user)
-    Execute(daemon_cmd,
-            user=params.webhcat_user,
-            not_if=no_op_test,
-            environment = environ)
+    try:
+      Execute(daemon_cmd,
+              user=params.webhcat_user,
+              not_if=no_op_test,
+              environment = environ)
+    except:
+      show_logs(params.hcat_log_dir, params.webhcat_user)
+      raise
   elif action == 'stop':
     daemon_cmd = format('{cmd} stop')
-    Execute(daemon_cmd,
-            user = params.webhcat_user,
-            environment = environ)
+    try:
+      Execute(daemon_cmd,
+              user = params.webhcat_user,
+              environment = environ)
+    except:
+      show_logs(params.hcat_log_dir, params.webhcat_user)
+      raise
 
     pid_expression = "`" + as_user(format("cat {webhcat_pid_file}"), user=params.webhcat_user) + "`"
     process_id_exists_command = format("ls {webhcat_pid_file} >/dev/null 2>&1 && ps -p {pid_expression} >/dev/null 2>&1")
@@ -64,11 +72,15 @@ def webhcat_service(action='start', upgrade_type=None):
             not_if = format("! ({process_id_exists_command}) || ( sleep {wait_time} && ! ({process_id_exists_command}) )")
     )
 
-    # check if stopped the process, else fail the task
-    Execute(format("! ({process_id_exists_command})"),
-            tries=20,
-            try_sleep=3,
-    )
+    try:
+      # check if stopped the process, else fail the task
+      Execute(format("! ({process_id_exists_command})"),
+              tries=20,
+              try_sleep=3,
+      )
+    except:
+      show_logs(params.hcat_log_dir, params.webhcat_user)
+      raise
 
     File(params.webhcat_pid_file,
          action="delete",

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py
index 2043cfa..41074db 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py
@@ -27,6 +27,7 @@ from resource_management.libraries.functions.format import format
 from resource_management.libraries.functions.check_process_status import check_process_status
 from resource_management.libraries.functions import StackFeature
 from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions.show_logs import show_logs
 from kafka import ensure_base_directories
 
 import upgrade
@@ -82,10 +83,14 @@ class KafkaBroker(Script):
       setup_ranger_kafka() #Ranger Kafka Plugin related call 
     daemon_cmd = format('source {params.conf_dir}/kafka-env.sh ; {params.kafka_bin} start')
     no_op_test = format('ls {params.kafka_pid_file} >/dev/null 2>&1 && ps -p `cat {params.kafka_pid_file}` >/dev/null 2>&1')
-    Execute(daemon_cmd,
-            user=params.kafka_user,
-            not_if=no_op_test
-    )
+    try:
+      Execute(daemon_cmd,
+              user=params.kafka_user,
+              not_if=no_op_test
+      )
+    except:
+      show_logs(params.kafka_log_dir, params.kafka_user)
+      raise
 
   def stop(self, env, upgrade_type=None):
     import params
@@ -95,9 +100,13 @@ class KafkaBroker(Script):
     # before attempting to stop Kafka Broker
     ensure_base_directories()
     daemon_cmd = format('source {params.conf_dir}/kafka-env.sh; {params.kafka_bin} stop')
-    Execute(daemon_cmd,
-            user=params.kafka_user,
-    )
+    try:
+      Execute(daemon_cmd,
+              user=params.kafka_user,
+      )
+    except:
+      show_logs(params.kafka_log_dir, params.kafka_user)
+      raise
     File(params.kafka_pid_file,
           action = "delete"
     )

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
index af0442c..b72fc6f 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
@@ -35,6 +35,7 @@ from resource_management.libraries.functions.security_commons import build_expec
 from resource_management.core.resources.system import File, Execute, Directory, Link
 from resource_management.core.resources.service import Service
 from resource_management.core.logger import Logger
+from resource_management.libraries.functions.show_logs import show_logs
 
 from ambari_commons import OSConst, OSCheck
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
@@ -157,11 +158,15 @@ class KnoxGatewayDefault(KnoxGateway):
 
     update_knox_logfolder_permissions()
 
-    Execute(daemon_cmd,
-            user=params.knox_user,
-            environment={'JAVA_HOME': params.java_home},
-            not_if=no_op_test
-    )
+    try:
+      Execute(daemon_cmd,
+              user=params.knox_user,
+              environment={'JAVA_HOME': params.java_home},
+              not_if=no_op_test
+      )
+    except:
+      show_logs(params.knox_logs_dir, params.knox_user)
+      raise
 
   def stop(self, env, upgrade_type=None):
     import params
@@ -170,10 +175,15 @@ class KnoxGatewayDefault(KnoxGateway):
 
     update_knox_logfolder_permissions()
 
-    Execute(daemon_cmd,
-            environment={'JAVA_HOME': params.java_home},
-            user=params.knox_user,
-    )
+    try:
+      Execute(daemon_cmd,
+              environment={'JAVA_HOME': params.java_home},
+              user=params.knox_user,
+      )
+    except:
+      show_logs(params.knox_logs_dir, params.knox_user)
+      raise
+    
     File(params.knox_pid_file,
          action="delete",
     )

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_service.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_service.py
index 5a2474f..3060353 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_service.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_service.py
@@ -20,6 +20,7 @@ limitations under the License.
 import os
 from resource_management import *
 from resource_management.core.shell import as_user
+from resource_management.libraries.functions.show_logs import show_logs
 from resource_management.libraries.providers.hdfs_resource import WebHDFSUtil
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 from ambari_commons import OSConst
@@ -124,15 +125,23 @@ def oozie_service(action = 'start', upgrade_type=None):
         params.HdfsResource(None, action="execute")
         
 
-    # start oozie
-    Execute( start_cmd, environment=environment, user = params.oozie_user,
-      not_if = no_op_test )
+    try:
+      # start oozie
+      Execute( start_cmd, environment=environment, user = params.oozie_user,
+        not_if = no_op_test )
+    except:
+      show_logs(params.oozie_log_dir, params.oozie_user)
+      raise
 
   elif action == 'stop':
     stop_cmd  = format("cd {oozie_tmp_dir} && {oozie_home}/bin/oozie-stop.sh")
 
-    # stop oozie
-    Execute(stop_cmd, environment=environment, only_if  = no_op_test,
-      user = params.oozie_user)
+    try:
+      # stop oozie
+      Execute(stop_cmd, environment=environment, only_if  = no_op_test,
+        user = params.oozie_user)
+    except:
+      show_logs(params.oozie_log_dir, params.oozie_user)
+      raise
 
     File(params.pid_file, action = "delete")

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_service.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_service.py
index 0cb56aa..9477b8e 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_service.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_service.py
@@ -28,17 +28,25 @@ def ranger_service(name, action=None):
   
   if name == 'ranger_admin':
     no_op_test = format('ps -ef | grep proc_rangeradmin | grep -v grep')
-    Execute(params.ranger_start, environment=env_dict, user=params.unix_user, not_if=no_op_test)
+    try:
+      Execute(params.ranger_start, environment=env_dict, user=params.unix_user, not_if=no_op_test)
+    except:
+      show_logs(params.admin_log_dir, params.unix_user)
+      raise
   elif name == 'ranger_usersync':
     no_op_test = format('ps -ef | grep proc_rangerusersync | grep -v grep')
 
 
     if params.stack_supports_usersync_non_root:
-      Execute(params.usersync_start,
-              environment=env_dict,
-              not_if=no_op_test,
-              user=params.unix_user,
-      )
+      try:
+        Execute(params.usersync_start,
+                environment=env_dict,
+                not_if=no_op_test,
+                user=params.unix_user,
+        )
+      except:
+        show_logs(params.usersync_log_dir, params.unix_user)
+        raise
     else:
       # Usersync requires to be run as root for 2.2
       Execute((params.usersync_start,),

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_service.py b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_service.py
index f5b0c83..55c0486 100644
--- a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_service.py
+++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_service.py
@@ -23,6 +23,7 @@ from resource_management.core import shell
 from resource_management.libraries.functions.format import format
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.logger import Logger
+from resource_management.libraries.functions.show_logs import show_logs
 
 def kms_service(action='start'):
   import params
@@ -34,7 +35,15 @@ def kms_service(action='start'):
   if action == 'start':
     no_op_test = format('ps -ef | grep proc_rangerkms | grep -v grep')
     cmd = format('{kms_home}/ranger-kms start')
-    Execute(cmd, not_if=no_op_test, environment=env_dict, user=format('{kms_user}'))
+    try:
+      Execute(cmd, not_if=no_op_test, environment=env_dict, user=format('{kms_user}'))
+    except:
+      show_logs(params.kms_log_dir, params.kms_user)
+      raise
   elif action == 'stop':
     cmd = format('{kms_home}/ranger-kms stop')
-    Execute(cmd, environment=env_dict, user=format('{kms_user}'))
+    try:
+      Execute(cmd, environment=env_dict, user=format('{kms_user}'))
+    except:
+      show_logs(params.kms_log_dir, params.kms_user)
+      raise

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_service.py b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_service.py
index 6ada1c2..c3784d6 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_service.py
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_service.py
@@ -27,6 +27,7 @@ from resource_management.core.resources.system import File, Execute
 from resource_management.libraries.functions.version import format_stack_version
 from resource_management.libraries.functions.stack_features import check_stack_feature
 from resource_management.libraries.functions import StackFeature
+from resource_management.libraries.functions.show_logs import show_logs
 
 def spark_service(name, upgrade_type=None, action=None):
   import params
@@ -65,10 +66,14 @@ def spark_service(name, upgrade_type=None, action=None):
     if name == 'jobhistoryserver':
       historyserver_no_op_test = format(
       'ls {spark_history_server_pid_file} >/dev/null 2>&1 && ps -p `cat {spark_history_server_pid_file}` >/dev/null 2>&1')
-      Execute(format('{spark_history_server_start}'),
-              user=params.spark_user,
-              environment={'JAVA_HOME': params.java_home},
-              not_if=historyserver_no_op_test)
+      try:
+        Execute(format('{spark_history_server_start}'),
+                user=params.spark_user,
+                environment={'JAVA_HOME': params.java_home},
+                not_if=historyserver_no_op_test)
+      except:
+        show_logs(params.spark_log_dir, user=params.spark_user)
+        raise
 
     elif name == 'sparkthriftserver':
       if params.security_enabled:
@@ -78,26 +83,38 @@ def spark_service(name, upgrade_type=None, action=None):
 
       thriftserver_no_op_test = format(
       'ls {spark_thrift_server_pid_file} >/dev/null 2>&1 && ps -p `cat {spark_thrift_server_pid_file}` >/dev/null 2>&1')
-      Execute(format('{spark_thrift_server_start} --properties-file {spark_thrift_server_conf_file} {spark_thrift_cmd_opts_properties}'),
-              user=params.hive_user,
-              environment={'JAVA_HOME': params.java_home},
-              not_if=thriftserver_no_op_test
-      )
+      try:
+        Execute(format('{spark_thrift_server_start} --properties-file {spark_thrift_server_conf_file} {spark_thrift_cmd_opts_properties}'),
+                user=params.hive_user,
+                environment={'JAVA_HOME': params.java_home},
+                not_if=thriftserver_no_op_test
+        )
+      except:
+        show_logs(params.spark_log_dir, user=params.hive_user)
+        raise
   elif action == 'stop':
     if name == 'jobhistoryserver':
-      Execute(format('{spark_history_server_stop}'),
-              user=params.spark_user,
-              environment={'JAVA_HOME': params.java_home}
-      )
+      try:
+        Execute(format('{spark_history_server_stop}'),
+                user=params.spark_user,
+                environment={'JAVA_HOME': params.java_home}
+        )
+      except:
+        show_logs(params.spark_log_dir, user=params.spark_user)
+        raise
       File(params.spark_history_server_pid_file,
         action="delete"
       )
 
     elif name == 'sparkthriftserver':
-      Execute(format('{spark_thrift_server_stop}'),
-              user=params.hive_user,
-              environment={'JAVA_HOME': params.java_home}
-      )
+      try:
+        Execute(format('{spark_thrift_server_stop}'),
+                user=params.hive_user,
+                environment={'JAVA_HOME': params.java_home}
+        )
+      except:
+        show_logs(params.spark_log_dir, user=params.hive_user)
+        raise
       File(params.spark_thrift_server_pid_file,
         action="delete"
       )

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py
index 0222d71..d0b717f 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py
@@ -25,6 +25,7 @@ from resource_management.core.resources import File
 from resource_management.core.shell import as_user
 from resource_management.libraries.functions.format import format
 from resource_management.libraries.functions import get_user_call_output
+from resource_management.libraries.functions.show_logs import show_logs
 import time
 
 
@@ -65,12 +66,16 @@ def service(name, action = 'start'):
       wait_for_finish = False,
       path = params.storm_bin_dir)
 
-    Execute(crt_pid_cmd,
-      user = params.storm_user,
-      logoutput = True,
-      tries = tries_count,
-      try_sleep = 10,
-      path = params.storm_bin_dir)
+    try:
+      Execute(crt_pid_cmd,
+        user = params.storm_user,
+        logoutput = True,
+        tries = tries_count,
+        try_sleep = 10,
+        path = params.storm_bin_dir)
+    except:
+      show_logs(params.log_dir, params.storm_user)
+      raise
 
   elif action == "stop":
     process_dont_exist = format("! ({no_op_test})")

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py
index 6d9aef5..0703c1f 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py
@@ -23,6 +23,7 @@ from resource_management import *
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 from ambari_commons import OSConst
 from resource_management.core.shell import as_user
+from resource_management.libraries.functions.show_logs import show_logs
 
 @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
 def service(componentName, action='start', serviceName='yarn'):
@@ -44,6 +45,7 @@ def service(componentName, action='start', serviceName='yarn'):
     daemon = format("{mapred_bin}/mr-jobhistory-daemon.sh")
     pid_file = format("{mapred_pid_dir}/mapred-{mapred_user}-{componentName}.pid")
     usr = params.mapred_user
+    log_dir = params.yarn_log_dir
   else:
     # !!! yarn-daemon.sh deletes the PID for us; if we remove it the script
     # may not work correctly when stopping the service
@@ -51,6 +53,7 @@ def service(componentName, action='start', serviceName='yarn'):
     daemon = format("{yarn_bin}/yarn-daemon.sh")
     pid_file = format("{yarn_pid_dir}/yarn-{yarn_user}-{componentName}.pid")
     usr = params.yarn_user
+    log_dir = params.mapred_log_dir
 
   cmd = format("export HADOOP_LIBEXEC_DIR={hadoop_libexec_dir} && {daemon} --config {hadoop_conf_dir}")
 
@@ -69,19 +72,27 @@ def service(componentName, action='start', serviceName='yarn'):
          ignore_failures = True
       )
 
-    # Attempt to start the process. Internally, this is skipped if the process is already running.
-    Execute(daemon_cmd, user = usr, not_if = check_process)
-
-    # Ensure that the process with the expected PID exists.
-    Execute(check_process,
-            not_if = check_process,
-            tries=5,
-            try_sleep=1,
-    )
+    try:
+      # Attempt to start the process. Internally, this is skipped if the process is already running.
+      Execute(daemon_cmd, user = usr, not_if = check_process)
+  
+      # Ensure that the process with the expected PID exists.
+      Execute(check_process,
+              not_if = check_process,
+              tries=5,
+              try_sleep=1,
+      )
+    except:
+      show_logs(log_dir, usr)
+      raise
 
   elif action == 'stop':
     daemon_cmd = format("{cmd} stop {componentName}")
-    Execute(daemon_cmd, user=usr)
+    try:
+      Execute(daemon_cmd, user=usr)
+    except:
+      show_logs(log_dir, usr)
+      raise
 
     # !!! yarn-daemon doesn't need us to delete PIDs
     if delete_pid_file is True:

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_service.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_service.py
index d645997..9f943d7 100644
--- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_service.py
+++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_service.py
@@ -27,7 +27,8 @@ from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions import StackFeature
 from resource_management.libraries.functions.version import compare_versions, format_stack_version
-from resource_management.libraries.functions.stack_features import check_stack_feature 
+from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions.show_logs import show_logs
 
 @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
 def zookeeper_service(action='start', upgrade_type=None):
@@ -44,10 +45,15 @@ def zookeeper_service(action='start', upgrade_type=None):
   if action == 'start':
     daemon_cmd = format("source {config_dir}/zookeeper-env.sh ; {cmd} start")
     no_op_test = format("ls {zk_pid_file} >/dev/null 2>&1 && ps -p `cat {zk_pid_file}` >/dev/null 2>&1")
-    Execute(daemon_cmd,
-            not_if=no_op_test,
-            user=params.zk_user
-    )
+    
+    try:
+      Execute(daemon_cmd,
+              not_if=no_op_test,
+              user=params.zk_user
+      )
+    except:
+      show_logs(params.zk_log_dir, params.zk_user)
+      raise
 
     if params.security_enabled:
       kinit_cmd = format("{kinit_path_local} -kt {smoke_user_keytab} {smokeuser_principal};")
@@ -58,11 +64,14 @@ def zookeeper_service(action='start', upgrade_type=None):
 
   elif action == 'stop':
     daemon_cmd = format("source {config_dir}/zookeeper-env.sh ; {cmd} stop")
-    rm_pid = format("rm -f {zk_pid_file}")
-    Execute(daemon_cmd,
-            user=params.zk_user
-    )
-    Execute(rm_pid)
+    try:
+      Execute(daemon_cmd,
+              user=params.zk_user
+      )
+    except:
+      show_logs(params.zk_log_dir, params.zk_user)
+      raise
+    File(params.zk_pid_file, action="delete")
 
 @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
 def zookeeper_service(action='start', rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py b/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
index 1c20915..2bd9944 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/ZOOKEEPER/test_zookeeper_server.py
@@ -67,7 +67,9 @@ class TestZookeeperServer(RMFTestCase):
     self.assertResourceCalled('Execute', 'source /etc/zookeeper/conf/zookeeper-env.sh ; env ZOOCFGDIR=/etc/zookeeper/conf ZOOCFG=zoo.cfg /usr/lib/zookeeper/bin/zkServer.sh stop',
       user = 'zookeeper',
     )
-    self.assertResourceCalled('Execute', 'rm -f /var/run/zookeeper/zookeeper_server.pid')
+    self.assertResourceCalled('File', '/var/run/zookeeper/zookeeper_server.pid',
+        action = ['delete'],
+    )
     self.assertNoMoreResources()
 
   def test_configure_secured(self):
@@ -112,7 +114,9 @@ class TestZookeeperServer(RMFTestCase):
                   user = 'zookeeper',
     )
 
-    self.assertResourceCalled('Execute', 'rm -f /var/run/zookeeper/zookeeper_server.pid')
+    self.assertResourceCalled('File', '/var/run/zookeeper/zookeeper_server.pid',
+        action = ['delete'],
+    )
     self.assertNoMoreResources()
 
   def assert_configure_default(self):

http://git-wip-us.apache.org/repos/asf/ambari/blob/017fbf13/ambari-server/src/test/python/stacks/2.3/ATLAS/test_metadata_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.3/ATLAS/test_metadata_server.py b/ambari-server/src/test/python/stacks/2.3/ATLAS/test_metadata_server.py
index ab5236b..e52f29c 100644
--- a/ambari-server/src/test/python/stacks/2.3/ATLAS/test_metadata_server.py
+++ b/ambari-server/src/test/python/stacks/2.3/ATLAS/test_metadata_server.py
@@ -148,5 +148,6 @@ class TestMetadataServer(RMFTestCase):
     self.assertResourceCalled('Execute', 'source /etc/atlas/conf/atlas-env.sh; /usr/hdp/current/atlas-server/bin/atlas_stop.py',
                               user = 'atlas',
     )
-    self.assertResourceCalled('Execute', 'rm -f /var/run/atlas/atlas.pid',
+    self.assertResourceCalled('File', '/var/run/atlas/atlas.pid',
+        action = ['delete'],
     )