Repository: ambari Updated Branches: refs/heads/branch-2.1 bbd9dad57 -> eccbd54b4
AMBARI-11800. RU: Hive upgrade failed when conf.server is not available (ncole) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/eccbd54b Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/eccbd54b Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/eccbd54b Branch: refs/heads/branch-2.1 Commit: eccbd54b4c0002770be959548ac8105fc0a295e1 Parents: bbd9dad Author: Nate Cole <nc...@hortonworks.com> Authored: Mon Jun 8 19:34:41 2015 -0400 Committer: Nate Cole <nc...@hortonworks.com> Committed: Mon Jun 8 19:34:57 2015 -0400 ---------------------------------------------------------------------- .../package/scripts/hive_server_upgrade.py | 6 +++++ .../stacks/2.0.6/HIVE/test_hive_server.py | 23 ++++++++++++++++++++ 2 files changed, 29 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/eccbd54b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_upgrade.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_upgrade.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_upgrade.py index 0b29d6f..d676304 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_upgrade.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server_upgrade.py @@ -17,6 +17,7 @@ limitations under the License. """ +import os import re from resource_management.core.logger import Logger from resource_management.core.exceptions import Fail @@ -49,6 +50,11 @@ def pre_upgrade_deregister(): if current_hiveserver_version is None: raise Fail('Unable to determine the current HiveServer2 version to deregister.') + # fallback when upgrading because /usr/hdp/current/hive-server2/conf/conf.server may not exist + hive_server_conf_dir = params.hive_server_conf_dir + if not os.path.exists(hive_server_conf_dir): + hive_server_conf_dir = "/etc/hive/conf.server" + # deregister command = format('hive --config {hive_server_conf_dir} --service hiveserver2 --deregister ' + current_hiveserver_version) Execute(command, user=params.hive_user, path=params.execute_path, tries=1 ) http://git-wip-us.apache.org/repos/asf/ambari/blob/eccbd54b/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py b/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py index 6fcd0f1..43a99b9 100644 --- a/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py +++ b/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py @@ -655,7 +655,10 @@ class TestHiveServer(RMFTestCase): @patch("resource_management.libraries.functions.copy_tarball.copy_to_hdfs") @patch.object(Script, "is_hdp_stack_greater_or_equal", new = MagicMock(return_value=True)) + @patch("os.path.exists", new = MagicMock(return_value=True)) + @patch("platform.linux_distribution", new = MagicMock(return_value="Linux")) def test_stop_during_upgrade(self, copy_to_hdfs_mock): + call_side_effects = [(0, "hive-server2 - 2.2.0.0-2041"), (0, "hive-server2 - 2.2.0.0-2041")] * 4 copy_to_hdfs_mock.return_value = True @@ -672,6 +675,26 @@ class TestHiveServer(RMFTestCase): self.assertResourceCalled('Execute', 'hdp-select set hive-server2 2.2.1.0-2065',) + @patch("resource_management.libraries.functions.copy_tarball.copy_to_hdfs") + @patch.object(Script, "is_hdp_stack_greater_or_equal", new = MagicMock(return_value=True)) + def test_stop_during_upgrade_with_default_conf_server(self, copy_to_hdfs_mock): + + call_side_effects = [(0, "hive-server2 - 2.2.0.0-2041"), (0, "hive-server2 - 2.2.0.0-2041")] * 4 + copy_to_hdfs_mock.return_value = True + + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hive_server.py", + classname = "HiveServer", command = "restart", config_file = "hive-upgrade.json", + hdp_stack_version = self.UPGRADE_STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES, + call_mocks = call_side_effects + ) + + self.assertResourceCalled('Execute', 'hive --config /etc/hive/conf.server --service hiveserver2 --deregister 2.2.0.0-2041', + path=['/bin:/usr/hdp/current/hive-server2/bin:/usr/hdp/current/hadoop-client/bin'], + tries=1, user='hive') + + self.assertResourceCalled('Execute', 'hdp-select set hive-server2 2.2.1.0-2065',) + def test_stop_during_upgrade_bad_hive_version(self): try: self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hive_server.py",