Jelajahi Sumber

AMBARI-12676 - Upgrades Fail When Calling conf-select On hadoop When hadoop Is Not Installed (jonathanhurley)

Jonathan Hurley 9 tahun lalu
induk
melakukan
ba3a2caa53

+ 5 - 3
ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py

@@ -269,9 +269,6 @@ def get_hadoop_conf_dir(force_latest_on_upgrade=False):
       stack_name = stack_info[0]
       stack_version = stack_info[1]
 
-      # ensure the new HDP stack is conf-selected
-      select(stack_name, "hadoop", stack_version)
-
       # determine if hdp-select has been run and if not, then use the current
       # hdp version until this component is upgraded
       if not force_latest_on_upgrade:
@@ -282,6 +279,11 @@ def get_hadoop_conf_dir(force_latest_on_upgrade=False):
       # only change the hadoop_conf_dir path, don't conf-select this older version
       hadoop_conf_dir = "/usr/hdp/{0}/hadoop/conf".format(stack_version)
 
+      # ensure the new HDP stack is conf-selected, but only if it exists
+      # there are cases where hadoop might not be installed, such as on a host with only ZK
+      if os.path.exists(hadoop_conf_dir):
+        select(stack_name, "hadoop", stack_version)
+
   return hadoop_conf_dir
 
 

+ 4 - 12
ambari-server/src/test/python/stacks/2.3/MAHOUT/test_mahout_client.py

@@ -104,21 +104,13 @@ class TestMahoutClient(RMFTestCase):
     self.assertEquals("/usr/hdp/2.3.0.0-1234/hadoop/conf",
       sys.modules["params"].hadoop_conf_dir)
 
-    self.assertEquals(3, mocks_dict['call'].call_count)
-    self.assertEquals(3, mocks_dict['checked_call'].call_count)
-
-    self.assertEquals(
-      ('conf-select', 'set-conf-dir', '--package', 'hadoop', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
-      mocks_dict['checked_call'].call_args_list[0][0][0])
-
-    self.assertEquals(
-      ('conf-select', 'create-conf-dir', '--package', 'hadoop', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
-      mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(1, mocks_dict['call'].call_count)
+    self.assertEquals(1, mocks_dict['checked_call'].call_count)
 
     self.assertEquals(
       ('conf-select', 'set-conf-dir', '--package', 'mahout', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
-      mocks_dict['checked_call'].call_args_list[1][0][0])
+      mocks_dict['checked_call'].call_args_list[0][0][0])
 
     self.assertEquals(
       ('conf-select', 'create-conf-dir', '--package', 'mahout', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
-      mocks_dict['call'].call_args_list[1][0][0])
+      mocks_dict['call'].call_args_list[0][0][0])