Parcourir la source

AMBARI-12411. Webhcat long running test fails with NPE at the Webhcat server (ncole)

Nate Cole il y a 10 ans
Parent
commit
afc984538b

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

@@ -320,5 +320,9 @@ def create_config_links(stack_id, stack_version):
 
 
       if need:
       if need:
         Logger.info("Creating conf dirs {0} for {1}".format(",".join(dirs), k))
         Logger.info("Creating conf dirs {0} for {1}".format(",".join(dirs), k))
-        select(args[0], k, stack_version)
+        try:
+          select(args[0], k, stack_version)
+        except Exception, err:
+          # don't ruin someone's day
+          Logger.logger.exception("Conf-select set failed to link '{k}'. Error: {0}".format(k, str(err)))
 
 

+ 1 - 0
ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_linux.py

@@ -255,6 +255,7 @@ java_share_dir = '/usr/share/java'
 driver_curl_target = format("{java_share_dir}/{jdbc_jar_name}")
 driver_curl_target = format("{java_share_dir}/{jdbc_jar_name}")
 
 
 hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
 hdfs_user = config['configurations']['hadoop-env']['hdfs_user']
+yarn_user = config['configurations']['yarn-env']['yarn_user']
 user_group = config['configurations']['cluster-env']['user_group']
 user_group = config['configurations']['cluster-env']['user_group']
 artifact_dir = format("{tmp_dir}/AMBARI-artifacts/")
 artifact_dir = format("{tmp_dir}/AMBARI-artifacts/")
 
 

+ 15 - 0
ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat.py

@@ -88,6 +88,21 @@ def webhcat():
             group=params.user_group,
             group=params.user_group,
             )
             )
 
 
+  # if we're in an upgrade of a secure cluster, make sure hive-site and yarn-site are created
+  if Script.is_hdp_stack_greater_or_equal("2.3") and params.version:
+    XmlConfig("hive-site.xml",
+      conf_dir = format("/usr/hdp/{version}/hive/conf"),
+      configurations = params.config['configurations']['hive-site'],
+      configuration_attributes = params.config['configuration_attributes']['hive-site'],
+      owner = params.hive_user)
+
+    XmlConfig("yarn-site.xml",
+      conf_dir = format("/usr/hdp/{version}/hadoop/conf"),
+      configurations = params.config['configurations']['yarn-site'],
+      configuration_attributes = params.config['configuration_attributes']['yarn-site'],
+      owner = params.yarn_user)
+  
+
   File(format("{config_dir}/webhcat-env.sh"),
   File(format("{config_dir}/webhcat-env.sh"),
        owner=params.webhcat_user,
        owner=params.webhcat_user,
        group=params.user_group,
        group=params.user_group,

+ 76 - 0
ambari-server/src/test/python/stacks/2.0.6/HIVE/test_webhcat_server.py

@@ -381,3 +381,79 @@ class TestWebHCatServer(RMFTestCase):
     self.assertEquals(
     self.assertEquals(
       ('conf-select', 'create-conf-dir', '--package', 'hadoop', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
       ('conf-select', 'create-conf-dir', '--package', 'hadoop', '--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[1][0][0])
+
+  @patch("resource_management.core.shell.call")
+  def test_rolling_restart_configure(self, call_mock):
+    import sys
+
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+    json_content['hostLevelParams']['stack_version'] = "2.3"
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/webhcat_server.py",
+      classname = "WebHCatServer",
+      command = "configure",
+      config_dict = json_content,
+      hdp_stack_version = self.STACK_VERSION,
+      target = RMFTestCase.TARGET_COMMON_SERVICES,
+      call_mocks = [(0, None), (0, None)],
+      mocks_dict = mocks_dict)
+
+
+    self.assertResourceCalled('Directory', '/var/run/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True,
+      mode = 0755)
+
+    self.assertResourceCalled('Directory', '/var/log/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True,
+      mode = 0755)
+
+    self.assertResourceCalled('Directory', '/usr/hdp/current/hive-webhcat/etc/webhcat',
+      owner = 'hcat',
+      group = 'hadoop',
+      recursive = True)
+
+    self.assertResourceCalled('XmlConfig', 'webhcat-site.xml',
+      owner = 'hcat',
+      group = 'hadoop',
+      conf_dir = '/usr/hdp/current/hive-webhcat/etc/webhcat',
+      configurations = self.getConfig()['configurations']['webhcat-site'],
+      configuration_attributes = self.getConfig()['configuration_attributes']['webhcat-site'])
+
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+      owner = 'hive',
+      conf_dir = '/usr/hdp/2.3.0.0-1234/hive/conf',
+      configurations = self.getConfig()['configurations']['hive-site'],
+      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'])
+      
+    self.assertResourceCalled('XmlConfig', 'yarn-site.xml',
+      owner = 'yarn',
+      conf_dir = '/usr/hdp/2.3.0.0-1234/hadoop/conf',
+      configurations = self.getConfig()['configurations']['yarn-site'],
+      configuration_attributes = self.getConfig()['configuration_attributes']['yarn-site'])
+
+    self.assertResourceCalled('File', '/usr/hdp/current/hive-webhcat/etc/webhcat/webhcat-env.sh',
+      content = InlineTemplate(self.getConfig()['configurations']['webhcat-env']['content']),
+      owner = 'hcat',
+      group = 'hadoop')
+
+    self.assertResourceCalled('Directory', '/usr/hdp/current/hive-webhcat/etc/webhcat',
+      cd_access = 'a',
+      recursive=True)
+
+    self.assertResourceCalled('File', '/usr/hdp/current/hive-webhcat/etc/webhcat/webhcat-log4j.properties',
+                              content = 'log4jproperties\nline2',
+                              owner = 'hcat',
+                              group = 'hadoop',
+                              mode = 0644)
+
+    self.assertNoMoreResources()
+