Bläddra i källkod

AMBARI-9134 - Unable to Upgrade Oozie Server Due to Missing JAR (jonathanhurley)

Jonathan Hurley 10 år sedan
förälder
incheckning
5620318518

+ 7 - 3
ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server_upgrade.py

@@ -117,11 +117,15 @@ def prepare_libext_directory():
   os.chmod(params.oozie_libext_customer_dir, 0o777)
 
   # get all hadooplzo* JAR files
+  # hdp-select set hadoop-client has not run yet, therefore we cannot use
+  # /usr/hdp/current/hadoop-client ; we must use params.current directly
   hadoop_lzo_pattern = 'hadoop-lzo*.jar'
-  files = glob.iglob(os.path.join(params.hadoop_lib_home, hadoop_lzo_pattern))
+  hadoop_client_new_lib_dir = format("/usr/hdp/{version}/hadoop/lib")
+
+  files = glob.iglob(os.path.join(hadoop_client_new_lib_dir, hadoop_lzo_pattern))
   if not files:
     raise Fail("There are no files at {0} matching {1}".format(
-      params.hadoop_lib_home, hadoop_lzo_pattern))
+      hadoop_client_new_lib_dir, hadoop_lzo_pattern))
 
   # copy files into libext
   files_copied = False
@@ -133,7 +137,7 @@ def prepare_libext_directory():
 
   if not files_copied:
     raise Fail("There are no files at {0} matching {1}".format(
-      params.hadoop_lib_home, hadoop_lzo_pattern))
+      hadoop_client_new_lib_dir, hadoop_lzo_pattern))
 
   oozie_ext_zip_file = '/usr/share/HDP-oozie/ext-2.2.zip'
   if not os.path.isfile(oozie_ext_zip_file):

+ 1 - 0
ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params.py

@@ -45,6 +45,7 @@ hdp_stack_version = format_hdp_stack_version(stack_version_unformatted)
 
 #hadoop params
 if hdp_stack_version != "" and compare_versions(hdp_stack_version, '2.2') >= 0:
+  # start out assuming client libraries
   hadoop_bin_dir = "/usr/hdp/current/hadoop-client/bin"
   hadoop_lib_home = "/usr/hdp/current/hadoop-client/lib"
 

+ 8 - 3
ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py

@@ -607,15 +607,16 @@ class TestOozieServer(RMFTestCase):
   @patch("os.remove")
   @patch("os.chmod")
   @patch("shutil.rmtree", new = MagicMock())
-  @patch("glob.iglob", new = MagicMock(return_value=["/usr/hdp/2.2.1.0-2187/hadoop/lib/hadoop-lzo-0.6.0.2.2.1.0-2187.jar"]))
-  @patch("shutil.copy")
+  @patch("glob.iglob")
+  @patch("shutil.copy", new = MagicMock())
   @patch.object(shell, "call")
-  def test_upgrade(self, call_mock, shutil_copy_mock, chmod_mock, remove_mock,
+  def test_upgrade(self, call_mock, glob_mock, chmod_mock, remove_mock,
       isfile_mock, exists_mock, isdir_mock, tarfile_open_mock):
 
     isdir_mock.return_value = True
     exists_mock.side_effect = [False,False,True]
     isfile_mock.return_value = True
+    glob_mock.return_value = ["/usr/hdp/2.2.1.0-2187/hadoop/lib/hadoop-lzo-0.6.0.2.2.1.0-2187.jar"]
 
     prepare_war_stdout = """INFO: Adding extension: libext/mysql-connector-java.jar
     New Oozie WAR file with added 'JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war"""
@@ -643,6 +644,10 @@ class TestOozieServer(RMFTestCase):
     self.assertEqual(remove_mock.call_count,1)
     remove_mock.assert_called_with('/usr/bin/oozie')
 
+    self.assertTrue(glob_mock.called)
+    self.assertEqual(glob_mock.call_count,1)
+    glob_mock.assert_called_with('/usr/hdp/2.2.1.0-2135/hadoop/lib/hadoop-lzo*.jar')
+
     self.assertResourceCalled('Execute', 'hdp-select set oozie-server 2.2.1.0-2135')
     self.assertResourceCalled('Execute', 'hdfs dfs -chown oozie:hadoop /user/oozie/share', user='oozie')
     self.assertResourceCalled('Execute', 'hdfs dfs -chmod -R 755 /user/oozie/share', user='oozie')