Merge branch 'feature/SLIDER-35' into develop
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 8665622..a3c5c8e 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
@@ -2187,7 +2187,7 @@
* @throws IOException
* @throws YarnException
*/
- public List<String> listRegistryInstanceIDs() throws
+ public List<String> listRegistedSliderInstances() throws
IOException,
YarnException {
try {
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/info/ServiceInstanceData.java b/slider-core/src/main/java/org/apache/slider/core/registry/info/ServiceInstanceData.java
index c4154c0..1d8c561 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/info/ServiceInstanceData.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/info/ServiceInstanceData.java
@@ -26,7 +26,12 @@
import java.util.Map;
/**
- * Service instance data to serialize with JSON
+ * Service instance data to serialize with JSON.
+ *
+ * The equality and hash codes are derived from the
+ * service type and ID, which aren't final so that JSON marshalling
+ * works. Do not change these fields if an instance is stored
+ * in a map
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@@ -47,11 +52,53 @@
*/
public RegistryView externalView = new RegistryView();
+ public ServiceInstanceData() {
+ }
+
+ public ServiceInstanceData(String id, String serviceType) {
+ this.serviceType = serviceType;
+ this.id = id;
+ }
+
+ /**
+ * Instances are equal if they look after the same service type
+ * and name
+ * @param o other
+ * @return true if id and type match
+ */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ ServiceInstanceData that = (ServiceInstanceData) o;
+
+ if (!id.equals(that.id)) {
+ return false;
+ }
+ if (!serviceType.equals(that.serviceType)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = serviceType.hashCode();
+ result = 31 * result + id.hashCode();
+ return result;
+ }
+
@Override
public String toString() {
final StringBuilder sb =
new StringBuilder("ServiceInstanceData{");
- sb.append(", id='").append(id).append('\'');
+ sb.append("id='").append(id).append('\'');
sb.append(", serviceType='").append(serviceType).append('\'');
sb.append('}');
return sb.toString();
diff --git a/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java b/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
index 1ff56a9..f8008a4 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
@@ -63,7 +63,6 @@
/**
* Validate the instance definition.
- * @param clusterSpec
*/
public void validateInstanceDefinition(AggregateConf instanceDefinition) throws
SliderException {
diff --git a/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java b/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
index 8d3146a..a06134b 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/AbstractProviderService.java
@@ -87,9 +87,9 @@
@Override
public void bind(StateAccessForProviders stateAccessor,
- RegistryViewForProviders registry) {
+ RegistryViewForProviders reg) {
this.amState = stateAccessor;
- this.registry = registry;
+ this.registry = reg;
}
@Override
diff --git a/slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java b/slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java
index 7502267..5b85f7b 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/ProviderRole.java
@@ -49,10 +49,7 @@
}
ProviderRole that = (ProviderRole) o;
- if (!name.equals(that.name)) {
- return false;
- }
- return true;
+ return name.equals(that.name);
}
@Override
diff --git a/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java b/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
index 47a8cc3..8d2462e 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/ProviderService.java
@@ -33,7 +33,6 @@
import org.apache.slider.core.registry.info.ServiceInstanceData;
import org.apache.slider.server.appmaster.state.StateAccessForProviders;
import org.apache.slider.server.appmaster.web.rest.agent.AgentRestOperations;
-import org.apache.slider.server.services.curator.RegistryBinderService;
import org.apache.slider.server.services.registry.RegistryViewForProviders;
import org.apache.slider.server.services.utility.EventCallback;
diff --git a/slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java b/slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java
index 4a9cb6d..cb7d27a 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/ProviderUtils.java
@@ -229,7 +229,7 @@
String configName,
Map<String,String> tokenMap) {
String prefix = OptionKeys.SITE_XML_PREFIX +
- (configName.length() > 0 ? configName + "." : "");
+ (!configName.isEmpty() ? configName + "." : "");
for (Map.Entry<String, String> entry : options.entrySet()) {
String key = entry.getKey();
if (key.startsWith(prefix)) {
@@ -294,7 +294,7 @@
FileNotFoundException {
String path;
File scriptFile;
- if (imagePath!=null) {
+ if (imagePath != null) {
File tarball = new File(SliderKeys.LOCAL_TARBALL_INSTALL_SUBDIR);
scriptFile = findBinScriptInExpandedArchive(tarball, bindir, script);
// now work back from the script to build the relative path
@@ -418,7 +418,7 @@
}
log.debug("Found {} entries in {}", ls.length, base);
- List<File> directories = new LinkedList<File>();
+ List<File> directories = new LinkedList<>();
StringBuilder dirs = new StringBuilder();
for (File file : ls) {
log.debug("{}", false);
diff --git a/slider-core/src/main/java/org/apache/slider/providers/SliderProviderFactory.java b/slider-core/src/main/java/org/apache/slider/providers/SliderProviderFactory.java
index 4fc617f..f3bf0b1 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/SliderProviderFactory.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/SliderProviderFactory.java
@@ -87,10 +87,6 @@
SliderProviderFactory providerFactory = providerClass.newInstance();
providerFactory.setConf(conf);
return providerFactory;
- } catch (InstantiationException e) {
- ex = e;
- } catch (IllegalAccessException e) {
- ex = e;
} catch (Exception e) {
ex = e;
}
diff --git a/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java b/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
index 66cfeba..9d13707 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
@@ -87,7 +87,7 @@
* List of roles
*/
public static final List<ProviderRole> ROLES =
- new ArrayList<ProviderRole>();
+ new ArrayList<>();
public static final int KEY_AM = ROLE_AM_PRIORITY_INDEX;
@@ -151,7 +151,7 @@
throws IOException, SliderException {
Map<String, LocalResource> providerResources =
- new HashMap<String, LocalResource>();
+ new HashMap<>();
ProviderUtils.addProviderJar(providerResources,
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 25037ea..3f54e27 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
@@ -725,10 +725,9 @@
List<String> serviceInstancesRunning = registry.instanceIDs(serviceName);
log.info("service instances already running: {}", serviceInstancesRunning);
-
- ServiceInstanceData instanceData = new ServiceInstanceData();
- instanceData.id = registryId;
- instanceData.serviceType = appServiceType;
+
+ ServiceInstanceData instanceData = new ServiceInstanceData(registryId,
+ appServiceType);
// IPC services
@@ -750,10 +749,8 @@
// push the registration info to ZK
registry.registerSelf(
- appServiceType,
- registryId,
- amWebAPI,
- instanceData);
+ instanceData, amWebAPI
+ );
}
/**
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java
index b139f74..e6b2664 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/publisher/PublisherResource.java
@@ -150,7 +150,7 @@
}
@GET
- @Path("/" + CONFIG+ ".json")
+ @Path("/" + CONFIG + ".json")
@Produces({MediaType.APPLICATION_JSON})
public String getConfigurationContentJson(
@PathParam("setname") String setname,
diff --git a/slider-core/src/main/java/org/apache/slider/server/services/curator/RegistryBinderService.java b/slider-core/src/main/java/org/apache/slider/server/services/curator/RegistryBinderService.java
index f4bd9bd..14b78a7 100644
--- a/slider-core/src/main/java/org/apache/slider/server/services/curator/RegistryBinderService.java
+++ b/slider-core/src/main/java/org/apache/slider/server/services/curator/RegistryBinderService.java
@@ -108,12 +108,6 @@
Preconditions.checkNotNull(name, "null `name` arg");
Preconditions.checkState(isInState(STATE.STARTED), "Not started: " + this);
- if (lookup(id) != null) {
- throw new BadClusterStateException(
- "existing entry for service id %s name %s %s",
- id, name, url);
- }
-
ServiceInstanceBuilder<Payload> instanceBuilder = builder()
.name(name)
.id(id)
@@ -141,16 +135,6 @@
}
/**
- * Get the registered instance by its ID
- * @param id ID
- * @return instance or null
- */
- public synchronized ServiceInstance<Payload> lookup(String id) {
- Preconditions.checkNotNull(id, "null `id` arg");
- return entries.get(id);
- }
-
- /**
* Create a builder. This is already pre-prepared with address, registration
* time and a (random) UUID
* @return a builder
@@ -270,6 +254,19 @@
}
/**
+ * Find a single instance -return that value or raise an exception
+ * @param serviceType service type
+ * @param name the name (required(
+ * @return the instance that matches the criteria
+ * @throws FileNotFoundException if there were no matches
+ * @throws IOException any network problem
+ */
+ public CuratorServiceInstance<Payload> findInstance(String serviceType,
+ String name) throws IOException {
+ Preconditions.checkArgument(StringUtils.isNotEmpty(name), "name");
+ return findInstances(serviceType, name).get(0);
+ }
+ /**
* List registry entries. If a name was given, then the single match is returned
* -otherwise all entries matching the service type
* @param serviceType service type
diff --git a/slider-core/src/main/java/org/apache/slider/server/services/registry/RegistryViewForProviders.java b/slider-core/src/main/java/org/apache/slider/server/services/registry/RegistryViewForProviders.java
index e3d642b..22ba066 100644
--- a/slider-core/src/main/java/org/apache/slider/server/services/registry/RegistryViewForProviders.java
+++ b/slider-core/src/main/java/org/apache/slider/server/services/registry/RegistryViewForProviders.java
@@ -39,15 +39,10 @@
/**
* Register the service, raising IOExceptions when anything fails
- * @param serviceType service type
- * @param instanceName ID -must be unique
- * @param url URL to register
* @param instanceData instance data
+ * @param url URL to register
* @throws IOException on registration problems
*/
void registerServiceInstance(
- String serviceType,
- String instanceName,
- URL url,
- ServiceInstanceData instanceData) throws IOException;
+ ServiceInstanceData instanceData, URL url) throws IOException;
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/services/registry/SliderRegistryService.java b/slider-core/src/main/java/org/apache/slider/server/services/registry/SliderRegistryService.java
index 0d4a357..1904df5 100644
--- a/slider-core/src/main/java/org/apache/slider/server/services/registry/SliderRegistryService.java
+++ b/slider-core/src/main/java/org/apache/slider/server/services/registry/SliderRegistryService.java
@@ -72,29 +72,24 @@
/**
* register an instance -only valid once the service is started.
* This sets the selfRegistration field
- * @param serviceType service type
- * @param instanceName ID -must be unique
- * @param url URL to register
* @param instanceData instance data
+ * @param url URL to register
* @throws IOException on registration problems
*/
- public void registerSelf(String serviceType,
- String instanceName,
- URL url,
- ServiceInstanceData instanceData) throws IOException {
- registerServiceInstance(serviceType, instanceName, url, instanceData);
+ public void registerSelf(ServiceInstanceData instanceData, URL url) throws IOException {
+ registerServiceInstance(instanceData, url);
setSelfRegistration(instanceData);
}
@Override
public void registerServiceInstance(
- String serviceType,
- String instanceName,
- URL url,
- ServiceInstanceData instanceData) throws IOException {
+ ServiceInstanceData instanceData, URL url) throws IOException {
Preconditions.checkNotNull(instanceData);
+ Preconditions.checkNotNull(instanceData.id);
+ Preconditions.checkNotNull(instanceData.serviceType);
+
try {
- register(serviceType, instanceName, url, instanceData);
+ register(instanceData.serviceType, instanceData.id, url, instanceData);
} catch (IOException e) {
throw e;
} catch (Exception e) {
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAgentAM.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAgentAM.groovy
index 6794327..d700fea 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAgentAM.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneAgentAM.groovy
@@ -98,10 +98,10 @@
describe "service registry names"
SliderRegistryService registry = client.registry
def names = registry.getServiceTypes();
- dumpRegistryNames(names)
+ dumpRegistryServiceTypes(names)
describe "service registry instance IDs"
- def instanceIds = client.listRegistryInstanceIDs()
+ def instanceIds = client.listRegistedSliderInstances()
log.info("number of instanceIds: ${instanceIds.size()}")
instanceIds.each { String it -> log.info(it) }
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy
index 7582b72..7639375 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneRegistryAM.groovy
@@ -115,9 +115,9 @@
describe "service registry names"
SliderRegistryService registryService = client.registry
def serviceTypes = registryService.serviceTypes;
- dumpRegistryNames(serviceTypes)
+ dumpRegistryServiceTypes(serviceTypes)
- List<String> instanceIds = client.listRegistryInstanceIDs()
+ List<String> instanceIds = client.listRegistedSliderInstances()
dumpRegistryInstanceIDs(instanceIds)
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
index 0100d7a..bc7c79a 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
@@ -101,32 +101,35 @@
Client client = createTestClient();
// test the available GET URIs
- WebResource webResource = client.resource(publisher_url + "/dummy-site");
+ String sliderConfigset = publisher_url +"/"+ RestPaths.SLIDER_CONFIGSET + "/"
+ WebResource webResource
+ webResource = client.resource(sliderConfigset);
+ webResource = client.resource(sliderConfigset + "dummy-site");
PublishedConfiguration config = webResource.type(MediaType.APPLICATION_JSON)
.get(PublishedConfiguration.class);
assert config != null
Map<String,String> entries = config.entries
log.info("entries are {}", entries)
- assert entries.get("prop1").equals("val1")
- assert entries.get("prop2").equals("val2")
+ assert entries.get("prop1") =="val1"
+ assert entries.get("prop2")== "val2"
- webResource = client.resource(publisher_url + "/dummy-site/prop1");
+ webResource = client.resource(sliderConfigset + "dummy-site/prop1");
Map<String,String> val = webResource.type(MediaType.APPLICATION_JSON).get(Map.class);
assert "val1".equals(val.get("prop1"))
// some negative tests...
- webResource = client.resource(appendToURL(publisher_url,
- "/foobar-site"));
+ webResource = client.resource(appendToURL(sliderConfigset,
+ "foobar-site"));
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON)
.get(ClientResponse.class);
- assert response.getStatus() == 404
+ assert 404 == response.status
- webResource = client.resource(publisher_url + "/dummy-site/missing.prop");
+ webResource = client.resource(sliderConfigset + "dummy-site/missing.prop");
response = webResource.type(MediaType.TEXT_PLAIN).get(ClientResponse.class);
- assert response.getStatus() == 404
+ assert 404 == response.status
- }
+ }
}
diff --git a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
index 8588a53..2045f11 100644
--- a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
@@ -695,14 +695,17 @@
public static void dumpRegistryInstanceIDs(List<String> instanceIds) {
describe "service registry instance IDs"
- log.info("number of instanceIds: ${instanceIds.size()}")
- instanceIds.each { String it -> log.info(it) }
+ dumpCollection(instanceIds)
}
- public static void dumpRegistryNames(Collection<String> names) {
- describe "service registry names"
- log.info("number of names: ${names.size()}")
- names.each { String it -> log.info(it) }
+ public static void dumpRegistryServiceTypes(Collection<String> entries) {
+ describe "service registry types"
+ dumpCollection(entries)
+ }
+
+ def static void dumpCollection(Collection<String> entries) {
+ log.info("number of entries: ${entries.size()}")
+ entries.each { String it -> log.info(it) }
}
/**
diff --git a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
index 6aa7732..97199f4 100644
--- a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
+++ b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/publisher/TestAgentProviderService.java
@@ -39,8 +39,8 @@
@Override
public void bind(StateAccessForProviders stateAccessor,
- RegistryViewForProviders registry) {
- super.bind(stateAccessor, registry);
+ RegistryViewForProviders reg) {
+ super.bind(stateAccessor, reg);
Map<String,String> dummyProps = new HashMap<>();
dummyProps.put("prop1", "val1");
dummyProps.put("prop2", "val2");
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 7627829..7b19dd2 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
@@ -107,7 +107,7 @@
MapOperations worker = appconf.getMandatoryComponent(HBaseKeys.ROLE_WORKER);
- Map<String, String> sitexml = new HashMap<String, String>();
+ Map<String, String> sitexml = new HashMap<>();
//map all cluster-wide site. options
providerUtils.propagateSiteOptions(globalAppOptions, sitexml);
@@ -209,7 +209,7 @@
}
}
- private static Set<String> knownRoleNames = new HashSet<String>();
+ private static Set<String> knownRoleNames = new HashSet<>();
static {
List<ProviderRole> roles = HBaseRoles.getRoles();
knownRoleNames.add(SliderKeys.COMPONENT_AM);
@@ -256,7 +256,7 @@
// add any and all dependency files
Map<String, LocalResource> providerResources =
- new HashMap<String, LocalResource>();
+ new HashMap<>();
ProviderUtils.addProviderJar(providerResources,
this,
diff --git a/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseKeys.java b/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseKeys.java
index af799c0..1d6ca70 100644
--- a/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseKeys.java
+++ b/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseKeys.java
@@ -70,6 +70,10 @@
String HBASE_GC_OPTS = "SERVER_GC_OPTS";
String PROPAGATED_CONFDIR = "PROPAGATED_CONFDIR";
+
+ /**
+ * Service type used in registry
+ */
String HBASE_SERVICE_TYPE = "org.apache.hbase";
String HBASE_SITE_PUBLISHED_CONFIG = "hbase-site";
}
diff --git a/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseProviderService.java b/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseProviderService.java
index 236ec62..fc23970 100644
--- a/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseProviderService.java
+++ b/slider-providers/hbase/slider-hbase-provider/src/main/java/org/apache/slider/providers/hbase/HBaseProviderService.java
@@ -204,32 +204,25 @@
@Override
protected void serviceStart() throws Exception {
registerHBaseServiceEntry();
-
-
super.serviceStart();
}
private void registerHBaseServiceEntry() throws IOException {
- // not a URL, but needed
- URL hbaseURL = new URL("http://localhost:0");
- ServiceInstanceData instanceData = new ServiceInstanceData();
+ String name = amState.getApplicationName() ;
+// name += ".hbase";
+ ServiceInstanceData instanceData = new ServiceInstanceData(name,
+ HBASE_SERVICE_TYPE);
+ log.info("registering {}/{}", name, HBASE_SERVICE_TYPE );
PublishedConfiguration publishedSite =
- new PublishedConfiguration("HBase site",
- siteConf);
+ new PublishedConfiguration("HBase site", siteConf);
PublishedConfigSet configSet =
amState.getOrCreatePublishedConfigSet(HBASE_SERVICE_TYPE);
instanceData.externalView.configurationsURL = SliderUtils.appendToURL(
amWebAPI.toExternalForm(), SLIDER_PATH_PUBLISHER, HBASE_SERVICE_TYPE);
- configSet.put(HBASE_SITE_PUBLISHED_CONFIG,
- publishedSite);
- String name = amState.getApplicationName()+".hbase";
- log.info("registering {}/{}", name, HBASE_SERVICE_TYPE);
- registry.registerServiceInstance(HBASE_SERVICE_TYPE,
- name,
- null,
- instanceData
- );
+ configSet.put(HBASE_SITE_PUBLISHED_CONFIG, publishedSite);
+
+ registry.registerServiceInstance(instanceData, null);
}
/**
diff --git a/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestHBaseMaster.groovy b/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestHBaseMaster.groovy
index 01996ee..52bc004 100644
--- a/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestHBaseMaster.groovy
+++ b/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestHBaseMaster.groovy
@@ -80,15 +80,28 @@
describe "service registry names"
SliderRegistryService registryService = client.registry
def names = registryService.getServiceTypes();
- dumpRegistryNames(names)
+ dumpRegistryServiceTypes(names)
List<CuratorServiceInstance<ServiceInstanceData>> instances =
client.listRegistryInstances();
- def hbaseService = registryService.findByID(
- instances,
- HBaseKeys.HBASE_SERVICE_TYPE)
+
+ def hbaseInstances = registryService.findInstances( HBaseKeys.HBASE_SERVICE_TYPE, null)
+ assert hbaseInstances.size() == 1
+ def hbaseService = hbaseInstances[0]
assert hbaseService
- RegistryRetriever retriever = new RegistryRetriever(hbaseService.payload)
+ def hbaseServiceData = hbaseService.payload
+ log.info "HBase service 0 == $hbaseServiceData"
+ assert hbaseServiceData.id
+ assert hbaseServiceData.serviceType == HBaseKeys.HBASE_SERVICE_TYPE
+
+ hbaseInstances = registryService.findInstances(
+ HBaseKeys.HBASE_SERVICE_TYPE,
+ clustername)
+ assert hbaseInstances.size() == 1
+ def hbaseServiceData2 = hbaseInstances[0].payload
+ assert hbaseServiceData == hbaseServiceData2
+
+ RegistryRetriever retriever = new RegistryRetriever(hbaseServiceData)
log.info retriever.toString()
assert retriever.hasConfigurations(true)
PublishedConfigSet externalConfSet = retriever.getConfigurations(true)
diff --git a/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestTwoLiveClusters.groovy b/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestTwoLiveClusters.groovy
index dba52ba..a58f99a 100644
--- a/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestTwoLiveClusters.groovy
+++ b/slider-providers/hbase/slider-hbase-provider/src/test/groovy/org/apache/slider/providers/hbase/minicluster/live/TestTwoLiveClusters.groovy
@@ -22,6 +22,7 @@
import groovy.util.logging.Slf4j
import org.apache.slider.common.params.Arguments
import org.apache.slider.client.SliderClient
+import org.apache.slider.providers.hbase.HBaseKeys
import org.apache.slider.providers.hbase.minicluster.HBaseMiniClusterTestBase
import org.apache.slider.core.main.ServiceLauncher
import org.apache.slider.core.registry.info.ServiceInstanceData
@@ -41,8 +42,10 @@
*/
@Test
public void testTwoLiveClusters() throws Throwable {
- createMiniCluster("TestTwoLiveClusters", configuration, 1, true)
- String clustername1 = "testtwoliveclusters-a"
+ def name = "test_two_live_clusters"
+ createMiniCluster(name, configuration, 1, true)
+
+ String clustername1 = name + "-1"
//now launch the cluster
int regionServerCount = 1
ServiceLauncher<SliderClient> launcher = createHBaseCluster(clustername1, regionServerCount, [], true, true)
@@ -59,7 +62,7 @@
waitForHBaseRegionServerCount(sliderClient, clustername1, 1, hbaseClusterStartupToLiveTime)
//now here comes cluster #2
- String clustername2 = "testtwoliveclusters-b"
+ String clustername2 = name + "-2"
String zkpath = "/$clustername2"
@@ -83,21 +86,30 @@
describe "service registry names"
SliderRegistryService registry = cluster2Client.registry
def names = registry.getServiceTypes();
- dumpRegistryNames(names)
+ dumpRegistryServiceTypes(names)
- List<String> instanceIds = sliderClient.listRegistryInstanceIDs()
+ List<String> instanceIds = sliderClient.listRegistedSliderInstances()
dumpRegistryInstanceIDs(instanceIds)
- assert names.size() == 1
+ assert names.size() == 2
assert instanceIds.size() == 2
- List<CuratorServiceInstance<ServiceInstanceData>> instances = sliderClient.listRegistryInstances(
- )
+ List<CuratorServiceInstance<ServiceInstanceData>> instances =
+ sliderClient.listRegistryInstances()
dumpRegistryInstances(instances)
assert instances.size() == 2
+ def hbaseInstances = registry.findInstances(
+ HBaseKeys.HBASE_SERVICE_TYPE, null)
+ assert hbaseInstances.size() == 2
+ def hbase1ServiceData = registry.findInstance(
+ HBaseKeys.HBASE_SERVICE_TYPE, clustername1).payload
+ def hbase2ServiceData = registry.findInstance(
+ HBaseKeys.HBASE_SERVICE_TYPE, clustername2).payload
+ assert !(hbase1ServiceData == hbase2ServiceData)
+
clusterActionFreeze(cluster2Client, clustername2,"freeze cluster 2")
clusterActionFreeze(sliderClient, clustername1,"Freeze cluster 1")