Repository: ambari Updated Branches: refs/heads/branch-2.2 0244d233a -> 48b23a52a
AMBARI-15452 : Change timeouts for Hbase and Phoenix (avijayan) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/48b23a52 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/48b23a52 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/48b23a52 Branch: refs/heads/branch-2.2 Commit: 48b23a52a444a86ae61f1afb64f2f649516d6e62 Parents: 0244d23 Author: Aravindan Vijayan <avija...@hortonworks.com> Authored: Thu Mar 17 12:40:25 2016 -0700 Committer: Aravindan Vijayan <avija...@hortonworks.com> Committed: Thu Mar 17 12:40:33 2016 -0700 ---------------------------------------------------------------------- .../server/upgrade/UpgradeCatalog222.java | 29 ++++++++++ .../0.1.0/configuration/ams-hbase-site.xml | 24 +++++++- .../server/upgrade/UpgradeCatalog222Test.java | 60 ++++++++++++++++++++ 3 files changed, 110 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/48b23a52/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java index 8267d5d..e10585e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java @@ -66,6 +66,7 @@ public class UpgradeCatalog222 extends AbstractUpgradeCatalog { */ private static final Logger LOG = LoggerFactory.getLogger(UpgradeCatalog222.class); private static final String AMS_SITE = "ams-site"; + private static final String AMS_HBASE_SITE = "ams-hbase-site"; private static final String HIVE_SITE_CONFIG = "hive-site"; private static final String ATLAS_APPLICATION_PROPERTIES_CONFIG = "application-properties"; private static final String ATLAS_HOOK_HIVE_MINTHREADS_PROPERTY = "atlas.hook.hive.minThreads"; @@ -85,6 +86,10 @@ public class UpgradeCatalog222 extends AbstractUpgradeCatalog { public static final String PRECISION_TABLE_TTL = "timeline.metrics.host.aggregator.ttl"; public static final String CLUSTER_SECOND_TABLE_TTL = "timeline.metrics.cluster.aggregator.second.ttl"; public static final String CLUSTER_MINUTE_TABLE_TTL = "timeline.metrics.cluster.aggregator.minute.ttl"; + public static final String HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD = "hbase.client.scanner.timeout.period"; + public static final String HBASE_RPC_TIMEOUT = "hbase.rpc.timeout"; + public static final String PHOENIX_QUERY_TIMEOUT = "phoenix.query.timeoutMs"; + public static final String PHOENIX_QUERY_KEEPALIVE = "phoenix.query.keepAliveMs"; private static final String[] HDFS_WIDGETS_TO_UPDATE = new String[] { "NameNode RPC", "NN Connection Load" }; @@ -313,6 +318,30 @@ public class UpgradeCatalog222 extends AbstractUpgradeCatalog { updateConfigurationPropertiesForCluster(cluster, AMS_SITE, newProperties, true, true); } + Config amsHbaseSite = cluster.getDesiredConfigByType(AMS_HBASE_SITE); + if (amsHbaseSite != null) { + Map<String, String> amsHbaseSiteProperties = amsHbaseSite.getProperties(); + Map<String, String> newProperties = new HashMap<>(); + + if (!amsHbaseSiteProperties.containsKey(HBASE_RPC_TIMEOUT)) { + newProperties.put(HBASE_RPC_TIMEOUT, String.valueOf(300000)); + } + + if (!amsHbaseSiteProperties.containsKey(PHOENIX_QUERY_KEEPALIVE)) { + newProperties.put(PHOENIX_QUERY_KEEPALIVE, String.valueOf(300000)); + } + + if (!amsHbaseSiteProperties.containsKey(HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD) || + amsHbaseSiteProperties.get(HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD).equals("900000")) { + amsHbaseSiteProperties.put(HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, String.valueOf(300000)); + } + + if (!amsHbaseSiteProperties.containsKey(PHOENIX_QUERY_TIMEOUT) || + amsHbaseSiteProperties.get(PHOENIX_QUERY_TIMEOUT).equals("1200000")) { + amsHbaseSiteProperties.put(PHOENIX_QUERY_TIMEOUT, String.valueOf(300000)); + } + updateConfigurationPropertiesForCluster(cluster, AMS_HBASE_SITE, newProperties, true, true); + } } } } http://git-wip-us.apache.org/repos/asf/ambari/blob/48b23a52/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml index acd14aa..815b126 100644 --- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml +++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml @@ -230,20 +230,38 @@ </property> <property> <name>phoenix.query.timeoutMs</name> - <value>1200000</value> + <value>300000</value> <description> Number of milliseconds after which a query will timeout on the client. - Default is 10 min. + Default is 5 min. + </description> + </property> + <property> + <name>phoenix.query.keepAliveMs</name> + <value>300000</value> + <description> + Number of milliseconds after which a query will keep the connection to HBase alive. + Default is 5 min. </description> </property> <property> <name>hbase.client.scanner.timeout.period</name> - <value>900000</value> + <value>300000</value> <description> Client scanner lease period in milliseconds. </description> </property> <property> + <name>hbase.rpc.timeout</name> + <value>30000</value> + <description> + This is for the RPC layer to define how long HBase client applications + take for a remote call to time out. It uses pings to check connections + but will eventually throw a TimeoutException. + </description> + <display-name>HBase RPC Timeout</display-name> + </property> + <property> <name>hbase.regionserver.thread.compaction.large</name> <value>2</value> <description> http://git-wip-us.apache.org/repos/asf/ambari/blob/48b23a52/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java index 82d5464..859513b 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java @@ -354,6 +354,66 @@ public class UpgradeCatalog222Test { } @Test + public void testAmsHbaseSiteUpdateConfigs() throws Exception{ + + Map<String, String> oldPropertiesAmsHbaseSite = new HashMap<String, String>() { + { + put("hbase.client.scanner.timeout.period", String.valueOf(900000)); + put("phoenix.query.timeoutMs", String.valueOf(1200000)); + } + }; + Map<String, String> newPropertiesAmsHbaseSite = new HashMap<String, String>() { + { + put("hbase.client.scanner.timeout.period", String.valueOf(300000)); + put("hbase.rpc.timeout", String.valueOf(300000)); + put("phoenix.query.timeoutMs", String.valueOf(300000)); + put("phoenix.query.keepAliveMs", String.valueOf(300000)); + } + }; + EasyMockSupport easyMockSupport = new EasyMockSupport(); + + Clusters clusters = easyMockSupport.createNiceMock(Clusters.class); + final Cluster cluster = easyMockSupport.createNiceMock(Cluster.class); + Config mockAmsHbaseSite = easyMockSupport.createNiceMock(Config.class); + + expect(clusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{ + put("normal", cluster); + }}).once(); + expect(cluster.getDesiredConfigByType("ams-hbase-site")).andReturn(mockAmsHbaseSite).atLeastOnce(); + expect(mockAmsHbaseSite.getProperties()).andReturn(oldPropertiesAmsHbaseSite).anyTimes(); + + Injector injector = easyMockSupport.createNiceMock(Injector.class); + expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes(); + expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes(); + expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes(); + + replay(injector, clusters, mockAmsHbaseSite, cluster); + + AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class) + .addMockedMethod("createConfiguration") + .addMockedMethod("getClusters", new Class[] { }) + .withConstructor(createNiceMock(ActionManager.class), clusters, injector) + .createNiceMock(); + + Injector injector2 = easyMockSupport.createNiceMock(Injector.class); + Capture<ConfigurationRequest> configurationRequestCapture = EasyMock.newCapture(); + ConfigurationResponse configurationResponseMock = easyMockSupport.createMock(ConfigurationResponse.class); + + expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes(); + expect(controller.getClusters()).andReturn(clusters).anyTimes(); + expect(controller.createConfiguration(capture(configurationRequestCapture))).andReturn(configurationResponseMock) + .anyTimes(); + + replay(controller, injector2, configurationResponseMock); + new UpgradeCatalog222(injector2).updateAMSConfigs(); + easyMockSupport.verifyAll(); + + ConfigurationRequest configurationRequest = configurationRequestCapture.getValue(); + Map<String, String> updatedProperties = configurationRequest.getProperties(); + assertTrue(Maps.difference(newPropertiesAmsHbaseSite, updatedProperties).areEqual()); + } + + @Test public void testHDFSWidgetUpdateWithOnlyZkService() throws Exception { final Clusters clusters = createNiceMock(Clusters.class); final Cluster cluster = createNiceMock(Cluster.class);