Repository: incubator-slider Updated Branches: refs/heads/develop 0b0f7623d -> ac76781d4
SLIDER-509 ongoing work getting the registry functional tests to work Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/7e4abb1d Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/7e4abb1d Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/7e4abb1d Branch: refs/heads/develop Commit: 7e4abb1d30e89212dec55fb2418d3b92108389b5 Parents: fe76b64 Author: Steve Loughran <[email protected]> Authored: Tue Oct 21 09:50:23 2014 +0100 Committer: Steve Loughran <[email protected]> Committed: Tue Oct 21 10:37:45 2014 +0100 ---------------------------------------------------------------------- .../org/apache/slider/client/SliderClient.java | 7 +++--- .../slider/common/tools/ConfigHelper.java | 16 +++++++++---- .../server/appmaster/SliderAppMaster.java | 3 ++- .../slider/server/appmaster/rpc/RpcBinder.java | 2 +- .../rpc/SliderClusterProtocolProxy.java | 20 ++++++++++++---- .../tools/TestClientResourceRegistration.groovy | 24 ++++++++++++++++---- .../funtest/framework/CommandTestBase.groovy | 11 ++++----- .../slider/funtest/framework/ConfLoader.groovy | 7 ++++-- .../funtest/commands/ResolveCommandIT.groovy | 16 +++++++++++-- .../lifecycle/AgentClusterLifecycleIT.groovy | 18 +++++++++++++++ .../accumulo/AccumuloClientProvider.java | 2 +- .../providers/hbase/HBaseClientProvider.java | 2 +- 12 files changed, 97 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-core/src/main/java/org/apache/slider/client/SliderClient.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java index 772c222..dc0cab0 100644 --- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -31,7 +31,6 @@ import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.HdfsConfiguration; import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.registry.client.binding.RegistryPathUtils; -import org.apache.hadoop.registry.client.types.RegistryPathStatus; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.alias.CredentialProvider; import org.apache.hadoop.security.alias.CredentialProviderFactory; @@ -45,7 +44,6 @@ import org.apache.hadoop.yarn.api.records.NodeState; import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.exceptions.YarnException; -import org.apache.hadoop.registry.client.api.RegistryConstants; import org.apache.hadoop.registry.client.api.RegistryOperations; import static org.apache.hadoop.registry.client.binding.RegistryUtils.*; @@ -229,7 +227,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe @Override protected void serviceInit(Configuration conf) throws Exception { Configuration clientConf = SliderUtils.loadClientConfigurationResource(); - ConfigHelper.mergeConfigurations(conf, clientConf, CLIENT_RESOURCE); + ConfigHelper.mergeConfigurations(conf, clientConf, CLIENT_RESOURCE, true); serviceArgs.applyDefinitions(conf); serviceArgs.applyFileSystemBinding(conf); // init security with our conf @@ -1315,11 +1313,12 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe if (serviceArgs.getFilesystemBinding() != null) { commandLine.add(Arguments.ARG_FILESYSTEM, serviceArgs.getFilesystemBinding()); } - +/* addConfOptionToCLI(commandLine, config, REGISTRY_PATH, DEFAULT_REGISTRY_PATH); addMandatoryConfOptionToCLI(commandLine, config, RegistryConstants.KEY_REGISTRY_ZK_QUORUM); +*/ if (clusterSecure) { // if the cluster is secure, make sure that http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-core/src/main/java/org/apache/slider/common/tools/ConfigHelper.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/tools/ConfigHelper.java b/slider-core/src/main/java/org/apache/slider/common/tools/ConfigHelper.java index c1b7e89..af5ceee 100644 --- a/slider-core/src/main/java/org/apache/slider/common/tools/ConfigHelper.java +++ b/slider-core/src/main/java/org/apache/slider/common/tools/ConfigHelper.java @@ -350,14 +350,15 @@ public class ConfigHelper { * Add a configuration from a file to an existing configuration * @param conf existing configuration * @param file file to load + * @param overwrite flag to indicate new values should overwrite the predecessor * @return the merged configuration * @throws IOException */ public static Configuration addConfigurationFile(Configuration conf, - File file) + File file, boolean overwrite) throws IOException { Configuration c2 = loadConfFromFile(file, false); - mergeConfigurations(conf, c2, file.getAbsolutePath()); + mergeConfigurations(conf, c2, file.getAbsolutePath(), overwrite); return conf; } @@ -462,13 +463,18 @@ public class ConfigHelper { * @param merge one to merge. This MUST be a non-default-load config to avoid * merge origin confusion * @param origin description of the origin for the put operation + * @param overwrite flag to indicate new values should overwrite the predecessor * @return the base with the merged values */ public static Configuration mergeConfigurations(Configuration base, - Iterable<Map.Entry<String, String>> merge, - String origin) { + Iterable<Map.Entry<String, String>> merge, + String origin, + boolean overwrite) { for (Map.Entry<String, String> entry : merge) { - base.set(entry.getKey(), entry.getValue(), origin); + String key = entry.getKey(); + if (overwrite || base.get(key) == null) { + base.set(key, entry.getValue(), origin); + } } return base; } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java index d583a90..a73fef1 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java @@ -387,7 +387,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService // Load in the server configuration - if it is actually on the Classpath Configuration serverConf = ConfigHelper.loadFromResource(SERVER_RESOURCE); - ConfigHelper.mergeConfigurations(conf, serverConf, SERVER_RESOURCE); + ConfigHelper.mergeConfigurations(conf, serverConf, SERVER_RESOURCE, true); AbstractActionArgs action = serviceArgs.getCoreAction(); SliderAMCreateAction createAction = (SliderAMCreateAction) action; @@ -537,6 +537,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService String sliderClusterDir = serviceArgs.getSliderClusterURI(); URI sliderClusterURI = new URI(sliderClusterDir); Path clusterDirPath = new Path(sliderClusterURI); + log.info("Application defined at {}", sliderClusterURI); SliderFileSystem fs = getClusterFS(); // build up information about the running application -this http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java index 0cef1d8..4cb6ee1 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/RpcBinder.java @@ -130,7 +130,7 @@ public class RpcBinder { rpcTimeout, null); SliderClusterProtocolPB endpoint = protoProxy.getProxy(); - return new SliderClusterProtocolProxy(endpoint); + return new SliderClusterProtocolProxy(endpoint, addr); } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java index d16b9c8..c1e0886 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java @@ -23,23 +23,35 @@ import com.google.protobuf.ServiceException; import org.apache.hadoop.ipc.ProtobufHelper; import org.apache.hadoop.ipc.ProtocolSignature; import org.apache.hadoop.ipc.RPC; +import org.apache.hadoop.ipc.RemoteException; import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.slider.api.SliderClusterProtocol; import org.apache.slider.api.proto.Messages; import java.io.IOException; +import java.net.InetSocketAddress; public class SliderClusterProtocolProxy implements SliderClusterProtocol { - final SliderClusterProtocolPB endpoint; private static final RpcController NULL_CONTROLLER = null; - - public SliderClusterProtocolProxy(SliderClusterProtocolPB endpoint) { + private final SliderClusterProtocolPB endpoint; + private final InetSocketAddress address; + + public SliderClusterProtocolProxy(SliderClusterProtocolPB endpoint, + InetSocketAddress address) { this.endpoint = endpoint; + this.address = address; } private IOException convert(ServiceException se) { - return ProtobufHelper.getRemoteException(se); + IOException ioe = ProtobufHelper.getRemoteException(se); + if (ioe instanceof RemoteException) { + RemoteException remoteException = (RemoteException) ioe; + return new RemoteException( + remoteException.getClassName(), + address.toString() + ": " + remoteException.getMessage()); + } + return ioe; } @Override http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-core/src/test/groovy/org/apache/slider/common/tools/TestClientResourceRegistration.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/common/tools/TestClientResourceRegistration.groovy b/slider-core/src/test/groovy/org/apache/slider/common/tools/TestClientResourceRegistration.groovy index e3bfa1b..b217329 100644 --- a/slider-core/src/test/groovy/org/apache/slider/common/tools/TestClientResourceRegistration.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/common/tools/TestClientResourceRegistration.groovy @@ -53,15 +53,31 @@ class TestClientResourceRegistration { conf1.set("key1", "conf1") conf1.set("key2", "conf1") Configuration conf2 = new Configuration(false) - conf1.set("key1", "conf2") - conf1.set("key3", "conf2") - ConfigHelper.mergeConfigurations(conf1, conf2, "test") + conf2.set("key1", "conf2") + conf2.set("key3", "conf2") + ConfigHelper.mergeConfigurations(conf1, conf2, "test", true) log.info(ConfigHelper.dumpConfigToString(conf1)) assert conf1.get("key1").equals("conf2") assert conf1.get("key2").equals("conf1") assert conf1.get("key3").equals("conf2") } + + @Test + public void testMergeConfigsNoOverwrite() throws Throwable { + Configuration conf1 = new Configuration(false) + conf1.set("key1", "conf1") + conf1.set("key2", "conf1") + Configuration conf2 = new Configuration(false) + conf2.set("key1", "conf2") + conf2.set("key3", "conf2") + ConfigHelper.mergeConfigurations(conf1, conf2, "test", false) + log.info(ConfigHelper.dumpConfigToString(conf1)) + + assert conf1.get("key1").equals("conf1") + assert conf1.get("key2").equals("conf1") + assert conf1.get("key3").equals("conf2") + } /** * This tests the situation where a yarn-config creation forces @@ -76,7 +92,7 @@ class TestClientResourceRegistration { String hostname = "nosuchhost:0" conf.set(YarnConfiguration.RM_ADDRESS, hostname) YarnConfiguration yc = new YarnConfiguration() - ConfigHelper.mergeConfigurations(yc, conf, "slider-client") + ConfigHelper.mergeConfigurations(yc, conf, "slider-client", true) InetSocketAddress addr = SliderUtils.getRmAddress(yc) assert SliderUtils.isAddressDefined(addr) } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy index 95cf766..5f3fd9e 100644 --- a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy +++ b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy @@ -22,6 +22,7 @@ import groovy.transform.CompileStatic import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.FileSystem as HadoopFS import org.apache.hadoop.fs.Path +import org.apache.hadoop.hdfs.HdfsConfiguration import org.apache.hadoop.registry.client.api.RegistryConstants import org.apache.hadoop.util.ExitUtil import org.apache.hadoop.yarn.conf.YarnConfiguration @@ -85,6 +86,7 @@ abstract class CommandTestBase extends SliderTestUtils { (which it may) the class will not be instantiable. */ static { + new HdfsConfiguration() ConfigHelper.registerDeprecatedConfigItems(); SLIDER_CONFIG = ConfLoader.loadSliderConf(SLIDER_CONF_XML, true); THAW_WAIT_TIME = getTimeOptionMillis(SLIDER_CONFIG, @@ -169,7 +171,7 @@ abstract class CommandTestBase extends SliderTestUtils { public static boolean maybeAddConfFile(File dir, String filename) throws IOException { File confFile = new File(dir, filename) if (confFile.isFile()) { - ConfigHelper.addConfigurationFile(SLIDER_CONFIG, confFile) + ConfigHelper.addConfigurationFile(SLIDER_CONFIG, confFile, true) log.debug("Loaded $confFile") return true; } else { @@ -621,7 +623,6 @@ abstract class CommandTestBase extends SliderTestUtils { ]) - def sleeptime = SLIDER_CONFIG.getInt(KEY_AM_RESTART_SLEEP_TIME, DEFAULT_AM_RESTART_SLEEP_TIME) sleep(sleeptime) @@ -646,7 +647,7 @@ abstract class CommandTestBase extends SliderTestUtils { protected void ensureApplicationIsUp(String clusterName) { repeatUntilTrue(this.&isApplicationUp, 20, - SLIDER_CONFIG.getInt(KEY_TEST_INSTANCE_LAUNCH_TIME, + 1000 * SLIDER_CONFIG.getInt(KEY_TEST_INSTANCE_LAUNCH_TIME, DEFAULT_INSTANCE_LAUNCH_TIME_SECONDS), ['arg1': clusterName], true, @@ -661,9 +662,7 @@ abstract class CommandTestBase extends SliderTestUtils { public static boolean isApplicationInState(String text, String applicationName) { boolean exists = false SliderShell shell = slider(0, - [ - ACTION_LIST, - applicationName]) + [ACTION_LIST, applicationName]) for (String str in shell.out) { if (str.contains(text)) { exists = true http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/ConfLoader.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/ConfLoader.groovy b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/ConfLoader.groovy index 8cefb84..dcc699d 100644 --- a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/ConfLoader.groovy +++ b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/ConfLoader.groovy @@ -53,6 +53,9 @@ public class ConfLoader { maybeAddConfFile(conf, hadoopConfDir, CORE_SITE_XML) maybeAddConfFile(conf, hadoopConfDir, HDFS_SITE_XML) maybeAddConfFile(conf, hadoopConfDir, YARN_SITE_XML) + // now need to force in the original again because otherwise + // the -site.xml values will overwrite the -client ones + ConfigHelper.addConfigurationFile(conf, confFile, true) } } @@ -70,8 +73,8 @@ public class ConfLoader { public static boolean maybeAddConfFile(Configuration conf, File dir, String filename) throws IOException { File confFile = new File(dir, filename) - if (confFile.isFile()) { - ConfigHelper.addConfigurationFile(conf, confFile) + if (confFile.file) { + ConfigHelper.addConfigurationFile(conf, confFile, true) log.info("Loaded ${confFile.absolutePath}") return true; } else { http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/ResolveCommandIT.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/ResolveCommandIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/ResolveCommandIT.groovy index f8a9eb1..04d5623 100644 --- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/ResolveCommandIT.groovy +++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/ResolveCommandIT.groovy @@ -23,7 +23,7 @@ import groovy.util.logging.Slf4j import org.apache.hadoop.registry.client.api.RegistryConstants import static org.apache.slider.common.params.Arguments.* -import org.apache.slider.core.main.LauncherExitCodes +import static org.apache.slider.core.main.LauncherExitCodes.*; import org.apache.slider.funtest.framework.CommandTestBase import org.junit.Test @@ -42,11 +42,23 @@ public class ResolveCommandIT extends CommandTestBase { resolve(0, [ARG_LIST, ARG_PATH, "/"]) } + + @Test + public void testResolveUnknownPath() throws Throwable { + resolve(EXIT_NOT_FOUND, + [ARG_LIST, ARG_PATH, "/undefined"]) + } @Test public void testResolveRootServiceRecord() throws Throwable { - resolve(LauncherExitCodes.EXIT_NOT_FOUND, + resolve(EXIT_NOT_FOUND, [ARG_PATH, "/"]) } + @Test + public void testResolveHomeServiceRecord() throws Throwable { + resolve(EXIT_NOT_FOUND, + [ARG_PATH, "~"]) + } + } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentClusterLifecycleIT.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentClusterLifecycleIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentClusterLifecycleIT.groovy index 1d01038..8fbe6b2 100644 --- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentClusterLifecycleIT.groovy +++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentClusterLifecycleIT.groovy @@ -20,10 +20,13 @@ package org.apache.slider.funtest.lifecycle import groovy.transform.CompileStatic import groovy.util.logging.Slf4j +import org.apache.hadoop.registry.client.binding.RegistryUtils +import org.apache.hadoop.registry.client.types.ServiceRecord import org.apache.slider.api.ClusterDescription import org.apache.slider.api.StatusKeys import org.apache.slider.client.SliderClient import org.apache.slider.common.SliderExitCodes +import org.apache.slider.common.SliderKeys import org.apache.slider.common.SliderXmlConfKeys import org.apache.slider.common.params.Arguments import org.apache.slider.common.params.SliderActions @@ -61,6 +64,8 @@ public class AgentClusterLifecycleIT extends AgentCommandTestBase describe "Walk a 0-role cluster through its lifecycle" + // sanity check to verify the config is correct + assert clusterFS.uri.scheme!="file" def clusterpath = buildClusterPath(CLUSTER) assert !clusterFS.exists(clusterpath) @@ -94,6 +99,19 @@ public class AgentClusterLifecycleIT extends AgentCommandTestBase //simple status status(0, CLUSTER) + + // resolve the ~ path + + resolve(0, [ARG_LIST, ARG_PATH, "~"]) + // running app + resolve(0, [ARG_LIST, ARG_PATH, SliderKeys.APP_TYPE, CLUSTER]) + // and the service record + File serviceRecordFile = File.createTempFile("tempfile", ".json") + resolve(0, [ARG_PATH, SliderKeys.APP_TYPE, CLUSTER, + ARG_OUTPUT, serviceRecordFile.absolutePath]) + RegistryUtils.ServiceRecordMarshal marshal = new RegistryUtils.ServiceRecordMarshal() + + ServiceRecord serviceRecord = marshal.fromFile(serviceRecordFile) //now status to a temp file File jsonStatus = File.createTempFile("tempfile", ".json") http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-providers/accumulo/slider-accumulo-provider/src/main/java/org/apache/slider/providers/accumulo/AccumuloClientProvider.java ---------------------------------------------------------------------- diff --git a/slider-providers/accumulo/slider-accumulo-provider/src/main/java/org/apache/slider/providers/accumulo/AccumuloClientProvider.java b/slider-providers/accumulo/slider-accumulo-provider/src/main/java/org/apache/slider/providers/accumulo/AccumuloClientProvider.java index 8fe5170..955e4fb 100644 --- a/slider-providers/accumulo/slider-accumulo-provider/src/main/java/org/apache/slider/providers/accumulo/AccumuloClientProvider.java +++ b/slider-providers/accumulo/slider-accumulo-provider/src/main/java/org/apache/slider/providers/accumulo/AccumuloClientProvider.java @@ -272,7 +272,7 @@ public class AccumuloClientProvider extends AbstractClientProvider implements //now, if there is an extra client conf, merge it in too if (clientConfExtras != null) { ConfigHelper.mergeConfigurations(siteConf, clientConfExtras, - "Slider Client"); + "Slider Client", true); } if (log.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e4abb1d/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseClientProvider.java ---------------------------------------------------------------------- diff --git a/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseClientProvider.java b/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseClientProvider.java index 81297fd..e0acd06 100644 --- a/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseClientProvider.java +++ b/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseClientProvider.java @@ -314,7 +314,7 @@ public class HBaseClientProvider extends AbstractClientProvider implements //now, if there is an extra client conf, merge it in too if (clientConfExtras != null) { ConfigHelper.mergeConfigurations(siteConf, clientConfExtras, - "Slider Client"); + "Slider Client", true); } if (log.isDebugEnabled()) {
