AMBARI-19720. When restarting HSI, Ambari should not run slider stop and slider 
destroy (LLAP script already does that) (smohanty)


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

Branch: refs/heads/branch-dev-patch-upgrade
Commit: 5a02a2ad15b9e29e72b8ea55aa7bce4ea52c8aea
Parents: 71b7434
Author: Sumit Mohanty <smoha...@hortonworks.com>
Authored: Wed Jan 25 17:04:36 2017 -0800
Committer: Sumit Mohanty <smoha...@hortonworks.com>
Committed: Wed Jan 25 17:05:05 2017 -0800

----------------------------------------------------------------------
 .../package/scripts/hive_server_interactive.py  |    5 +-
 .../0.12.0.2.0/package/scripts/params_linux.py  |    7 +
 .../stacks/2.5/HIVE/test_hive_server_int.py     |   80 ++
 .../2.5/configs/hsi_default_for_restart.json    | 1256 ++++++++++++++++++
 4 files changed, 1347 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/5a02a2ad/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_interactive.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_interactive.py
 
b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_interactive.py
index 1b6b3f2..dd0d1c4 100644
--- 
a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_interactive.py
+++ 
b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_interactive.py
@@ -137,7 +137,10 @@ class HiveServerInteractiveDefault(HiveServerInteractive):
       # Stop Hive Interactive Server first
       hive_service_interactive('hiveserver2', action='stop')
 
-      self._llap_stop(env)
+      if not params.is_restart_command:
+        self._llap_stop(env)
+      else:
+        Logger.info("LLAP stop is skipped as its a restart command")
 
     def status(self, env):
       import status_params

http://git-wip-us.apache.org/repos/asf/ambari/blob/5a02a2ad/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
 
b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
index e9e6337..997975e 100644
--- 
a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
+++ 
b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py
@@ -227,9 +227,16 @@ if hive_metastore_db_type == "mssql":
 #users
 hive_user = config['configurations']['hive-env']['hive_user']
 
+# is it a restart command
+is_restart_command = False
+if 'roleCommand' in config and 'CUSTOM_COMMAND' == config['roleCommand']:
+  if 'custom_command' in config['hostLevelParams'] and 'RESTART' == 
config['hostLevelParams']['custom_command']:
+    is_restart_command = True
+
 #JDBC driver jar name
 hive_jdbc_driver = 
config['configurations']['hive-site']['javax.jdo.option.ConnectionDriverName']
 jdk_location = config['hostLevelParams']['jdk_location']
+
 java_share_dir = '/usr/share/java'
 hive_database_name = config['configurations']['hive-env']['hive_database_name']
 hive_database = config['configurations']['hive-env']['hive_database']

http://git-wip-us.apache.org/repos/asf/ambari/blob/5a02a2ad/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py 
b/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
index 8c47d99..69a7ad5 100644
--- a/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
+++ b/ambari-server/src/test/python/stacks/2.5/HIVE/test_hive_server_int.py
@@ -242,6 +242,85 @@ class TestHiveServerInteractive(RMFTestCase):
     )
     self.assertNoMoreResources()
 
+  '''
+  restart should not call slider destroy
+  '''
+  @patch("os.path.isfile")
+  @patch("resource_management.libraries.functions.copy_tarball.copy_to_hdfs")
+  @patch("socket.socket")
+  @patch("time.sleep")
+  def test_restart_default_with_llap_multi_line_output(self, sleep_mock, 
socket_mock, copy_to_hfds_mock, is_file_mock):
+    self.maxDiff = None
+    copy_to_hfds_mock.return_value = False
+    s = socket_mock.return_value
+    is_file_mock.return_value = True
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + 
"/scripts/hive_server_interactive.py",
+                       classname="HiveServerInteractive",
+                       command="restart",
+                       config_file=self.get_src_folder() + 
"/test/python/stacks/2.5/configs/hsi_default_for_restart.json",
+                       stack_version=self.STACK_VERSION,
+                       target=RMFTestCase.TARGET_COMMON_SERVICES,
+                       checked_call_mocks=[(0, "OK.", ""),
+                                           #(0, "OK.", ""),
+                                           (0, "UNWANTED_STRING \n "
+                                               "       Prepared 
llap-slider-05Apr2016/run.sh for running LLAP \n     "
+                                               "UNWANTED_STRING \n ", ""),
+                                           (0, """{
+                                                      \"state\" : 
\"RUNNING_ALL\"
+                                                   }""", ""),
+                                           (0, """{
+                                                      \"state\" : 
\"RUNNING_ALL\"
+                                                   }""", ""),
+                                           (0, "OK.", "")],
+                       )
+
+    self.assertResourceCalled('Execute', "ambari-sudo.sh kill 123",
+                              not_if="! (ls /var/run/hive/hive-interactive.pid 
>/dev/null 2>&1 && ps -p 123 >/dev/null 2>&1)",
+                              )
+    self.assertResourceCalled('Execute',
+                              "! (ls /var/run/hive/hive-interactive.pid 
>/dev/null 2>&1 && ps -p 123 >/dev/null 2>&1)",
+                              tries=10,
+                              try_sleep=3,
+                              )
+
+    self.assertResourceCalled('Execute',
+                              "! (ls /var/run/hive/hive-interactive.pid 
>/dev/null 2>&1 && ps -p 123 >/dev/null 2>&1)",
+                              tries=20,
+                              try_sleep=3,
+                              )
+    self.assertResourceCalled('File', '/var/run/hive/hive-interactive.pid',
+                              action=['delete'],
+                              )
+
+    self.assert_configure_default()
+
+    self.assertResourceCalled('Execute',
+                              '/home/hive/llap-slider-05Apr2016/run.sh',
+                              logoutput= True, user=u'hive'
+    )
+    self.assertResourceCalled('Execute',
+                              'hive --config 
/usr/hdp/current/hive-server2-hive2/conf/conf.server --service metatool 
-updateLocation hdfs://c6401.ambari.apache.org:8020 OK.',
+                              environment={'PATH': 
'/usr/hdp/current/hadoop-client/bin'},
+                              user='hive'
+    )
+    self.assertResourceCalled('Execute',
+                              '/tmp/start_hiveserver2_interactive_script 
/var/run/hive/hive-server2-interactive.out 
/var/log/hive/hive-server2-interactive.err /var/run/hive/hive-interactive.pid 
/usr/hdp/current/hive-server2-hive2/conf/conf.server /var/log/hive',
+                              environment={'HADOOP_HOME': 
'/usr/hdp/current/hadoop-client',
+                                           'HIVE_BIN': 'hive2',
+                                           'JAVA_HOME': 
u'/usr/jdk64/jdk1.7.0_45'},
+                              not_if="ls /var/run/hive/hive-interactive.pid 
>/dev/null 2>&1 && ps -p 123 >/dev/null 2>&1",
+                              user='hive',
+                              
path=['/bin:/usr/hdp/current/hive-server2-hive2/bin:/usr/hdp/current/hadoop-client/bin'],
+                              )
+    self.assertResourceCalled('Execute',
+                              '/usr/jdk64/jdk1.7.0_45/bin/java -cp 
/usr/lib/ambari-agent/DBConnectionVerification.jar:/usr/hdp/current/hive-server2-hive2/lib/mysql-connector-java.jar
 org.apache.ambari.server.DBConnectionVerification 
\'jdbc:mysql://c6402.ambari.apache.org/hive?createDatabaseIfNotExist=true\' 
hive \'!`"\'"\'"\' 1\' com.mysql.jdbc.Driver',
+                              
path=['/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'],
+                              tries=5,
+                              try_sleep=10
+    )
+    self.assertNoMoreResources()
+
+
   """
   Tests HSI start with llap package creation output having multiple lines.
   Sample output : "UNWANTED STRING \n Prepared llap-slider-05Apr2016/run.sh 
for running LLAP \n UNWANTED STRING \n"
@@ -300,6 +379,7 @@ class TestHiveServerInteractive(RMFTestCase):
                               )
     self.assertNoMoreResources()
 
+
   def test_stop_default(self):
     self.maxDiff = None
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + 
"/scripts/hive_server_interactive.py",

Reply via email to