You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by st...@apache.org on 2015/11/01 12:49:13 UTC
[01/14] incubator-slider git commit: SLIDER-82 preparation: java-7
<>-ify some structures
Repository: incubator-slider
Updated Branches:
refs/heads/develop 5fea3dfc1 -> c8fb17e05
SLIDER-82 preparation: java-7 <>-ify some structures
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/bf4a3972
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/bf4a3972
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/bf4a3972
Branch: refs/heads/develop
Commit: bf4a3972951056862dfecfe0ba625aec041d96c4
Parents: 66af973
Author: Steve Loughran <st...@apache.org>
Authored: Wed Oct 14 14:39:19 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Wed Oct 14 14:39:19 2015 +0100
----------------------------------------------------------------------
.../slider/core/registry/docstore/PublishedConfigSet.java | 4 ++--
.../core/registry/docstore/PublishedConfiguration.java | 2 +-
.../slider/core/registry/docstore/PublishedExports.java | 9 +++++----
.../slider/core/registry/docstore/PublishedExportsSet.java | 8 +++-----
.../org/apache/slider/core/registry/docstore/UriMap.java | 2 +-
5 files changed, 12 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bf4a3972/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
index eac34c0..edc129e 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfigSet.java
@@ -41,7 +41,7 @@ public class PublishedConfigSet {
RestPaths.PUBLISHED_CONFIGURATION_REGEXP);
public Map<String, PublishedConfiguration> configurations =
- new HashMap<String, PublishedConfiguration>();
+ new HashMap<>();
public PublishedConfigSet() {
}
@@ -84,7 +84,7 @@ public class PublishedConfigSet {
}
public Set<String> keys() {
- TreeSet<String> keys = new TreeSet<String>();
+ TreeSet<String> keys = new TreeSet<>();
keys.addAll(configurations.keySet());
return keys;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bf4a3972/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
index e453fb1..50b522f 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedConfiguration.java
@@ -47,7 +47,7 @@ public class PublishedConfiguration {
public String updatedTime;
- public Map<String, String> entries = new HashMap<String, String>();
+ public Map<String, String> entries = new HashMap<>();
public PublishedConfiguration() {
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bf4a3972/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
index bf96e8c..0759b4e 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExports.java
@@ -41,7 +41,7 @@ public class PublishedExports {
public String description;
public long updated;
public String updatedTime;
- public Map<String, List<ExportEntry>> entries = new HashMap<String, List<ExportEntry>>();
+ public Map<String, List<ExportEntry>> entries = new HashMap<>();
public PublishedExports() {
}
@@ -68,7 +68,8 @@ public class PublishedExports {
}
/**
- * Is the configuration empty. This means either that it has not been given any values, or it is stripped down copy
+ * Is the configuration empty. This means either that it has not been given any values,
+ * or it is stripped down copy
* set down over the wire.
*
* @return true if it is empty
@@ -87,8 +88,8 @@ public class PublishedExports {
}
/**
- * Set the values from an iterable (this includes a Hadoop Configuration and Java properties object). Any existing
- * value set is discarded
+ * Set the values from an iterable (this includes a Hadoop Configuration and Java properties
+ * object). Any existing value set is discarded
*
* @param entries entries to put
*/
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bf4a3972/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
index cdd35de..339d3d6 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/PublishedExportsSet.java
@@ -40,8 +40,7 @@ public class PublishedExportsSet {
private static final PatternValidator validator = new PatternValidator(
RestPaths.PUBLISHED_CONFIGURATION_REGEXP);
- public Map<String, PublishedExports> exports =
- new HashMap<String, PublishedExports>();
+ public Map<String, PublishedExports> exports = new HashMap<>();
public PublishedExportsSet() {
}
@@ -84,15 +83,14 @@ public class PublishedExportsSet {
}
public Set<String> keys() {
- TreeSet<String> keys = new TreeSet<String>();
+ TreeSet<String> keys = new TreeSet<>();
keys.addAll(exports.keySet());
return keys;
}
public PublishedExportsSet shallowCopy() {
PublishedExportsSet that = new PublishedExportsSet();
- for (Map.Entry<String, PublishedExports> entry :
- exports.entrySet()) {
+ for (Map.Entry<String, PublishedExports> entry : exports.entrySet()) {
that.put(entry.getKey(), entry.getValue().shallowCopy());
}
return that;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bf4a3972/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
index a76e28d..120966f 100644
--- a/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
+++ b/slider-core/src/main/java/org/apache/slider/core/registry/docstore/UriMap.java
@@ -29,7 +29,7 @@ import java.util.Map;
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class UriMap {
- public Map<String, String> uris = new HashMap<String, String>();
+ public Map<String, String> uris = new HashMap<>();
@JsonIgnore
public void put(String key, String value) {
[04/14] incubator-slider git commit: SLIDER-82 SLIDER-947 build node
map from yarn update reports; serve via REST/IPC
Posted by st...@apache.org.
SLIDER-82 SLIDER-947 build node map from yarn update reports; serve via REST/IPC
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/de040cbb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/de040cbb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/de040cbb
Branch: refs/heads/develop
Commit: de040cbb87eb8a55bf9eb399422a48266c937ee7
Parents: bf4a397
Author: Steve Loughran <st...@apache.org>
Authored: Wed Oct 14 15:36:29 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Wed Oct 14 15:36:29 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/slider/api/StatusKeys.java | 1 +
.../org/apache/slider/api/proto/Messages.java | 3344 +++++++++++++++++-
.../slider/api/proto/RestTypeMarshalling.java | 7 +-
.../slider/api/types/ComponentInformation.java | 42 +-
.../slider/api/types/NodeEntryInformation.java | 68 +
.../slider/api/types/NodeInformation.java | 44 +
.../apache/slider/server/appmaster/AMUtils.java | 46 -
.../appmaster/ProtobufClusterServices.java | 30 +
.../server/appmaster/ProtobufRecordFactory.java | 29 -
.../server/appmaster/SliderAppMaster.java | 5 +-
.../management/MetricsAndMonitoring.java | 31 +-
.../appmaster/management/RecordedEvent.java | 58 +
.../operations/RMOperationHandlerActions.java | 7 +-
.../state/AbstractClusterServices.java | 33 +
.../appmaster/state/AbstractRecordFactory.java | 30 -
.../slider/server/appmaster/state/AppState.java | 16 +-
.../server/appmaster/state/NodeEntry.java | 77 +-
.../server/appmaster/state/NodeInstance.java | 59 +-
.../slider/server/appmaster/state/NodeMap.java | 35 +-
.../server/appmaster/state/RoleHistory.java | 66 +-
.../server/appmaster/state/RoleStatus.java | 13 +
.../state/StateAccessForProviders.java | 8 +-
.../slider/server/appmaster/web/WebAppApi.java | 8 +
.../src/main/proto/SliderClusterMessages.proto | 140 +-
.../appmaster/model/mock/MockAppState.groovy | 6 +-
.../model/mock/MockClusterServices.groovy | 30 +
.../model/mock/MockRecordFactory.groovy | 30 -
.../view/TestClusterSpecificationBlock.groovy | 9 +-
.../web/rest/agent/TestAMAgentWebServices.java | 4 +-
.../management/TestAMManagementWebServices.java | 4 +-
30 files changed, 3765 insertions(+), 515 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java b/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
index 6a0a2fa..8a2c4bb 100644
--- a/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
+++ b/slider-core/src/main/java/org/apache/slider/api/StatusKeys.java
@@ -32,6 +32,7 @@ public interface StatusKeys {
String STATISTICS_CONTAINERS_PREEMPTED = "containers.failed.preempted";
String STATISTICS_CONTAINERS_LIVE = "containers.live";
String STATISTICS_CONTAINERS_REQUESTED = "containers.requested";
+ String STATISTICS_CONTAINERS_ANTI_AFFINE_PENDING = "containers.anti-affine.pending";
String STATISTICS_CONTAINERS_STARTED = "containers.start.started";
String STATISTICS_CONTAINERS_START_FAILED =
"containers.start.failed";
[14/14] incubator-slider git commit: Merge branch
'feature/SLIDER-82-anti-affinity-attempt-2' into develop
Posted by st...@apache.org.
Merge branch 'feature/SLIDER-82-anti-affinity-attempt-2' into develop
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/c8fb17e0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/c8fb17e0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/c8fb17e0
Branch: refs/heads/develop
Commit: c8fb17e051553c3fff737dc65eaa6b3ad0f8563c
Parents: 5fea3df 002a88a
Author: Steve Loughran <st...@apache.org>
Authored: Sun Nov 1 11:48:53 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Sun Nov 1 11:48:53 2015 +0000
----------------------------------------------------------------------
pom.xml | 14 +-
slider-core/pom.xml | 6 +-
.../apache/slider/api/SliderApplicationApi.java | 28 +-
.../slider/api/SliderClusterProtocol.java | 25 +-
.../java/org/apache/slider/api/StatusKeys.java | 1 +
.../org/apache/slider/api/proto/Messages.java | 12920 ++++++++++++-----
.../slider/api/proto/RestTypeMarshalling.java | 97 +-
.../slider/api/proto/SliderClusterAPI.java | 274 +-
.../slider/api/types/ComponentInformation.java | 42 +-
.../slider/api/types/NodeEntryInformation.java | 61 +
.../slider/api/types/NodeInformation.java | 42 +
.../org/apache/slider/client/SliderClient.java | 32 +-
.../apache/slider/client/SliderClientAPI.java | 4 +-
.../client/ipc/SliderApplicationIpcClient.java | 22 +-
.../client/ipc/SliderClusterOperations.java | 118 +-
.../rest/SliderApplicationApiRestClient.java | 16 +-
.../apache/slider/common/tools/SliderUtils.java | 9 +-
.../registry/docstore/PublishedConfigSet.java | 4 +-
.../docstore/PublishedConfiguration.java | 2 +-
.../registry/docstore/PublishedExports.java | 9 +-
.../registry/docstore/PublishedExportsSet.java | 8 +-
.../slider/core/registry/docstore/UriMap.java | 2 +-
.../slideram/SliderAMClientProvider.java | 3 +-
.../apache/slider/server/appmaster/AMUtils.java | 46 -
.../appmaster/ProtobufClusterServices.java | 30 +
.../server/appmaster/ProtobufRecordFactory.java | 29 -
.../server/appmaster/SliderAppMaster.java | 72 +-
.../server/appmaster/management/BoolMetric.java | 87 +
.../server/appmaster/management/LongGauge.java | 92 +
.../appmaster/management/MeterAndCounter.java | 5 +
.../management/MetricsAndMonitoring.java | 55 +-
.../management/RangeLimitedCounter.java | 85 +
.../appmaster/management/RecordedEvent.java | 58 +
.../server/appmaster/management/Timestamp.java | 33 +
.../operations/RMOperationHandlerActions.java | 7 +-
.../rpc/SliderClusterProtocolPBImpl.java | 20 +
.../rpc/SliderClusterProtocolProxy.java | 20 +
.../server/appmaster/rpc/SliderIPCService.java | 78 +-
.../security/SecurityConfiguration.java | 20 +-
.../state/AbstractClusterServices.java | 33 +
.../appmaster/state/AbstractRecordFactory.java | 30 -
.../slider/server/appmaster/state/AppState.java | 104 +-
.../server/appmaster/state/NodeEntry.java | 77 +-
.../server/appmaster/state/NodeInstance.java | 59 +-
.../slider/server/appmaster/state/NodeMap.java | 35 +-
.../appmaster/state/ProviderAppState.java | 27 +-
.../server/appmaster/state/RoleHistory.java | 162 +-
.../server/appmaster/state/RoleStatus.java | 13 +
.../state/StateAccessForProviders.java | 40 +-
.../slider/server/appmaster/web/WebAppApi.java | 8 +
.../server/appmaster/web/WebAppApiImpl.java | 3 +-
.../server/appmaster/web/rest/RestPaths.java | 3 +-
.../ApplicationResouceContentCacheFactory.java | 54 +-
.../rest/application/ApplicationResource.java | 36 +-
.../resources/LiveNodesRefresher.java | 42 +
.../src/main/proto/SliderClusterMessages.proto | 150 +-
.../src/main/proto/SliderClusterProtocol.proto | 12 +-
.../rest/AbstractAppApiTestDelegates.groovy | 17 +-
.../agent/rest/IpcApiClientTestDelegates.java | 2 +-
.../agent/rest/JerseyTestDelegates.groovy | 11 +-
.../agent/rest/LowLevelRestTestDelegates.groovy | 21 +-
.../slider/agent/rest/TestStandaloneREST.groovy | 83 +-
.../TestMockAppStateAppRestIntegration.groovy | 5 +-
.../appmaster/model/mock/MockAppState.groovy | 6 +-
.../model/mock/MockClusterServices.groovy | 30 +
.../model/mock/MockRecordFactory.groovy | 30 -
.../model/monkey/TestMockMonkey.groovy | 2 +-
.../publisher/TestPublisherRestResources.groovy | 2 +-
.../view/TestClusterSpecificationBlock.groovy | 9 +-
.../apache/slider/test/SliderTestUtils.groovy | 123 +-
.../web/rest/agent/TestAMAgentWebServices.java | 4 +-
.../management/TestAMManagementWebServices.java | 4 +-
.../funtest/lifecycle/AgentRegistryIT.groovy | 2 +-
73 files changed, 10966 insertions(+), 4749 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c8fb17e0/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c8fb17e0/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
----------------------------------------------------------------------
[06/14] incubator-slider git commit: SLIDER-947 build node map from
yarn update reports; serve via REST/IPC. API done;
now trying to make sure RM notifies AM of state, which is being checked via
new metrics
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
index 7425c2d..115405c 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
@@ -23,6 +23,8 @@ import org.apache.commons.io.IOUtils;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeEntryInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.core.conf.ConfTreeOperations;
@@ -137,6 +139,79 @@ public class RestTypeMarshalling {
return builder.build();
}
+ public static Messages.NodeInformationProto marshall(NodeInformation info) {
+
+ Messages.NodeInformationProto.Builder builder =
+ Messages.NodeInformationProto.newBuilder();
+ builder.setHostname(info.hostname);
+ builder.setLastUpdated(info.lastUpdated);
+ if (info.state != null) {
+ builder.setState(info.state);
+ }
+ if (info.rackName != null) {
+ builder.setRackName(info.rackName);
+ }
+ if (info.healthReport != null) {
+ builder.setHealthReport(info.healthReport);
+ }
+ if (info.httpAddress != null) {
+ builder.setHttpAddress(info.httpAddress);
+ }
+ if (info.labels != null) {
+ builder.setLabels(info.labels);
+ }
+
+ List<NodeEntryInformation> entries = info.entries;
+ if (entries != null) {
+ for (NodeEntryInformation entry : entries) {
+ Messages.NodeEntryInformationProto.Builder node =
+ Messages.NodeEntryInformationProto.newBuilder();
+ node.setFailed(entry.failed);
+ node.setFailedRecently(entry.failedRecently);
+ node.setLive(entry.live);
+ node.setLastUsed(entry.lastUsed);
+ node.setPreempted(entry.preempted);
+ node.setPriority(entry.priority);
+ node.setRequested(entry.requested);
+ node.setReleasing(entry.releasing);
+ node.setStartFailed(entry.startFailed);
+ node.setStarting(entry.starting);
+ builder.addEntries(node.build());
+ }
+ }
+ return builder.build();
+ }
+
+ public static NodeInformation unmarshall(Messages.NodeInformationProto wire) {
+ NodeInformation info = new NodeInformation();
+ info.healthReport = wire.getHealthReport();
+ info.hostname = wire.getHostname();
+ info.httpAddress = wire.getHttpAddress();
+ info.labels = wire.getLabels();
+ info.lastUpdated = wire.getLastUpdated();
+ info.rackName = wire.getRackName();
+ info.state = wire.getState();
+ List<Messages.NodeEntryInformationProto> entriesList = wire.getEntriesList();
+ if (entriesList != null) {
+ info.entries = new ArrayList<>(entriesList.size());
+ for (Messages.NodeEntryInformationProto entry : entriesList) {
+ NodeEntryInformation nei = new NodeEntryInformation();
+ nei.failed = entry.getFailed();
+ nei.failedRecently = entry.getFailedRecently();
+ nei.lastUsed = entry.getLastUsed();
+ nei.live = entry.getLive();
+ nei.preempted = entry.getPreempted();
+ nei.priority = entry.getPriority();
+ nei.requested = entry.getRequested();
+ nei.releasing = entry.getReleasing();
+ nei.startFailed = entry.getStartFailed();
+ nei.starting = entry.getStarting();
+ info.entries.add(nei);
+ }
+ }
+ return info;
+ }
+
public static ContainerInformation unmarshall(Messages.ContainerInformationProto wire) {
ContainerInformation info = new ContainerInformation();
info.containerId = wire.getContainerId();
@@ -169,19 +244,15 @@ public class RestTypeMarshalling {
return info;
}
- public static List<ContainerInformation> unmarshall(
- Messages.GetLiveContainersResponseProto wire) {
- List<ContainerInformation> infoList = new ArrayList<ContainerInformation>(
- wire.getContainersList().size());
- for (Messages.ContainerInformationProto container : wire
- .getContainersList()) {
+ public static List<ContainerInformation> unmarshall(Messages.GetLiveContainersResponseProto wire) {
+ List<ContainerInformation> infoList = new ArrayList<>(wire.getContainersList().size());
+ for (Messages.ContainerInformationProto container : wire.getContainersList()) {
infoList.add(unmarshall(container));
}
return infoList;
}
- public static Messages.ContainerInformationProto
- marshall(ContainerInformation info) {
+ public static Messages.ContainerInformationProto marshall(ContainerInformation info) {
Messages.ContainerInformationProto.Builder builder =
Messages.ContainerInformationProto.newBuilder();
@@ -218,8 +289,7 @@ public class RestTypeMarshalling {
return builder.build();
}
- public static String
- unmarshall(Messages.WrappedJsonProto wire) {
+ public static String unmarshall(Messages.WrappedJsonProto wire) {
return wire.getJson();
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
index 702c762..081b7fa 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
@@ -203,6 +203,22 @@ public final class SliderClusterAPI {
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.ComponentInformationProto> done);
/**
+ * <code>rpc getLiveNodes(.org.apache.slider.api.GetLiveNodesRequestProto) returns (.org.apache.slider.api.GetLiveNodesResponseProto);</code>
+ */
+ public abstract void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done);
+
+ /**
+ * <code>rpc getLiveNode(.org.apache.slider.api.GetLiveNodeRequestProto) returns (.org.apache.slider.api.NodeInformationProto);</code>
+ */
+ public abstract void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done);
+
+ /**
* <code>rpc getModelDesired(.org.apache.slider.api.EmptyPayloadProto) returns (.org.apache.slider.api.WrappedJsonProto);</code>
*
* <pre>
@@ -428,6 +444,22 @@ public final class SliderClusterAPI {
}
@java.lang.Override
+ public void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done) {
+ impl.getLiveNodes(controller, request, done);
+ }
+
+ @java.lang.Override
+ public void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done) {
+ impl.getLiveNode(controller, request, done);
+ }
+
+ @java.lang.Override
public void getModelDesired(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
@@ -546,20 +578,24 @@ public final class SliderClusterAPI {
case 15:
return impl.getLiveComponent(controller, (org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto)request);
case 16:
- return impl.getModelDesired(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getLiveNodes(controller, (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)request);
case 17:
- return impl.getModelDesiredAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getLiveNode(controller, (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto)request);
case 18:
- return impl.getModelDesiredResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelDesired(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 19:
- return impl.getModelResolved(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelDesiredAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 20:
- return impl.getModelResolvedAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelDesiredResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 21:
- return impl.getModelResolvedResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelResolved(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 22:
- return impl.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ return impl.getModelResolvedAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
case 23:
+ return impl.getModelResolvedResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ case 24:
+ return impl.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+ case 25:
return impl.getClientCertificateStore(controller, (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)request);
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -608,9 +644,9 @@ public final class SliderClusterAPI {
case 15:
return org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 19:
@@ -622,6 +658,10 @@ public final class SliderClusterAPI {
case 22:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -670,9 +710,9 @@ public final class SliderClusterAPI {
case 15:
return org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 19:
@@ -684,6 +724,10 @@ public final class SliderClusterAPI {
case 22:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -875,6 +919,22 @@ public final class SliderClusterAPI {
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.ComponentInformationProto> done);
/**
+ * <code>rpc getLiveNodes(.org.apache.slider.api.GetLiveNodesRequestProto) returns (.org.apache.slider.api.GetLiveNodesResponseProto);</code>
+ */
+ public abstract void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done);
+
+ /**
+ * <code>rpc getLiveNode(.org.apache.slider.api.GetLiveNodeRequestProto) returns (.org.apache.slider.api.NodeInformationProto);</code>
+ */
+ public abstract void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done);
+
+ /**
* <code>rpc getModelDesired(.org.apache.slider.api.EmptyPayloadProto) returns (.org.apache.slider.api.WrappedJsonProto);</code>
*
* <pre>
@@ -1069,41 +1129,51 @@ public final class SliderClusterAPI {
done));
return;
case 16:
+ this.getLiveNodes(controller, (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)request,
+ com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto>specializeCallback(
+ done));
+ return;
+ case 17:
+ this.getLiveNode(controller, (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto)request,
+ com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.NodeInformationProto>specializeCallback(
+ done));
+ return;
+ case 18:
this.getModelDesired(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 17:
+ case 19:
this.getModelDesiredAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 18:
+ case 20:
this.getModelDesiredResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 19:
+ case 21:
this.getModelResolved(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 20:
+ case 22:
this.getModelResolvedAppconf(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 21:
+ case 23:
this.getModelResolvedResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 22:
+ case 24:
this.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
done));
return;
- case 23:
+ case 25:
this.getClientCertificateStore(controller, (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)request,
com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto>specializeCallback(
done));
@@ -1155,9 +1225,9 @@ public final class SliderClusterAPI {
case 15:
return org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 19:
@@ -1169,6 +1239,10 @@ public final class SliderClusterAPI {
case 22:
return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -1217,9 +1291,9 @@ public final class SliderClusterAPI {
case 15:
return org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance();
case 16:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance();
case 17:
- return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ return org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance();
case 18:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 19:
@@ -1231,6 +1305,10 @@ public final class SliderClusterAPI {
case 22:
return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
case 23:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 24:
+ return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+ case 25:
return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
default:
throw new java.lang.AssertionError("Can't get here.");
@@ -1493,12 +1571,42 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.ComponentInformationProto.getDefaultInstance()));
}
+ public void getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto> done) {
+ channel.callMethod(
+ getDescriptor().getMethods().get(16),
+ controller,
+ request,
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance(),
+ com.google.protobuf.RpcUtil.generalizeCallback(
+ done,
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.class,
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance()));
+ }
+
+ public void getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request,
+ com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.NodeInformationProto> done) {
+ channel.callMethod(
+ getDescriptor().getMethods().get(17),
+ controller,
+ request,
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance(),
+ com.google.protobuf.RpcUtil.generalizeCallback(
+ done,
+ org.apache.slider.api.proto.Messages.NodeInformationProto.class,
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance()));
+ }
+
public void getModelDesired(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(16),
+ getDescriptor().getMethods().get(18),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1513,7 +1621,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(17),
+ getDescriptor().getMethods().get(19),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1528,7 +1636,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(18),
+ getDescriptor().getMethods().get(20),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1543,7 +1651,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(19),
+ getDescriptor().getMethods().get(21),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1558,7 +1666,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(20),
+ getDescriptor().getMethods().get(22),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1573,7 +1681,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(21),
+ getDescriptor().getMethods().get(23),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1588,7 +1696,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(22),
+ getDescriptor().getMethods().get(24),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance(),
@@ -1603,7 +1711,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request,
com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto> done) {
channel.callMethod(
- getDescriptor().getMethods().get(23),
+ getDescriptor().getMethods().get(25),
controller,
request,
org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance(),
@@ -1700,6 +1808,16 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.GetLiveComponentRequestProto request)
throws com.google.protobuf.ServiceException;
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request)
+ throws com.google.protobuf.ServiceException;
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request)
+ throws com.google.protobuf.ServiceException;
+
public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelDesired(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
@@ -1940,12 +2058,36 @@ public final class SliderClusterAPI {
}
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto getLiveNodes(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto request)
+ throws com.google.protobuf.ServiceException {
+ return (org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) channel.callBlockingMethod(
+ getDescriptor().getMethods().get(16),
+ controller,
+ request,
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance());
+ }
+
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getLiveNode(
+ com.google.protobuf.RpcController controller,
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto request)
+ throws com.google.protobuf.ServiceException {
+ return (org.apache.slider.api.proto.Messages.NodeInformationProto) channel.callBlockingMethod(
+ getDescriptor().getMethods().get(17),
+ controller,
+ request,
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance());
+ }
+
+
public org.apache.slider.api.proto.Messages.WrappedJsonProto getModelDesired(
com.google.protobuf.RpcController controller,
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(16),
+ getDescriptor().getMethods().get(18),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -1957,7 +2099,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(17),
+ getDescriptor().getMethods().get(19),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -1969,7 +2111,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(18),
+ getDescriptor().getMethods().get(20),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -1981,7 +2123,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(19),
+ getDescriptor().getMethods().get(21),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -1993,7 +2135,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(20),
+ getDescriptor().getMethods().get(22),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -2005,7 +2147,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(21),
+ getDescriptor().getMethods().get(23),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -2017,7 +2159,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.WrappedJsonProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(22),
+ getDescriptor().getMethods().get(24),
controller,
request,
org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
@@ -2029,7 +2171,7 @@ public final class SliderClusterAPI {
org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request)
throws com.google.protobuf.ServiceException {
return (org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto) channel.callBlockingMethod(
- getDescriptor().getMethods().get(23),
+ getDescriptor().getMethods().get(25),
controller,
request,
org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance());
@@ -2051,7 +2193,7 @@ public final class SliderClusterAPI {
java.lang.String[] descriptorData = {
"\n\033SliderClusterProtocol.proto\022\025org.apach" +
"e.slider.api\032\033SliderClusterMessages.prot" +
- "o2\306\026\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
+ "o2\245\030\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
"ster\022..org.apache.slider.api.StopCluster" +
"RequestProto\032/.org.apache.slider.api.Sto" +
"pClusterResponseProto\022\200\001\n\021upgradeContain" +
@@ -2100,31 +2242,37 @@ public final class SliderClusterAPI {
"api.GetLiveComponentsResponseProto\022y\n\020ge" +
"tLiveComponent\0223.org.apache.slider.api.G",
"etLiveComponentRequestProto\0320.org.apache" +
- ".slider.api.ComponentInformationProto\022d\n" +
- "\017getModelDesired\022(.org.apache.slider.api" +
- ".EmptyPayloadProto\032\'.org.apache.slider.a" +
- "pi.WrappedJsonProto\022k\n\026getModelDesiredAp" +
- "pconf\022(.org.apache.slider.api.EmptyPaylo" +
- "adProto\032\'.org.apache.slider.api.WrappedJ" +
- "sonProto\022m\n\030getModelDesiredResources\022(.o" +
- "rg.apache.slider.api.EmptyPayloadProto\032\'" +
- ".org.apache.slider.api.WrappedJsonProto\022",
- "e\n\020getModelResolved\022(.org.apache.slider." +
+ ".slider.api.ComponentInformationProto\022q\n" +
+ "\014getLiveNodes\022/.org.apache.slider.api.Ge" +
+ "tLiveNodesRequestProto\0320.org.apache.slid" +
+ "er.api.GetLiveNodesResponseProto\022j\n\013getL" +
+ "iveNode\022..org.apache.slider.api.GetLiveN" +
+ "odeRequestProto\032+.org.apache.slider.api." +
+ "NodeInformationProto\022d\n\017getModelDesired\022" +
+ "(.org.apache.slider.api.EmptyPayloadProt" +
+ "o\032\'.org.apache.slider.api.WrappedJsonPro",
+ "to\022k\n\026getModelDesiredAppconf\022(.org.apach" +
+ "e.slider.api.EmptyPayloadProto\032\'.org.apa" +
+ "che.slider.api.WrappedJsonProto\022m\n\030getMo" +
+ "delDesiredResources\022(.org.apache.slider." +
"api.EmptyPayloadProto\032\'.org.apache.slide" +
- "r.api.WrappedJsonProto\022l\n\027getModelResolv" +
- "edAppconf\022(.org.apache.slider.api.EmptyP" +
- "ayloadProto\032\'.org.apache.slider.api.Wrap" +
- "pedJsonProto\022n\n\031getModelResolvedResource" +
- "s\022(.org.apache.slider.api.EmptyPayloadPr" +
- "oto\032\'.org.apache.slider.api.WrappedJsonP" +
- "roto\022e\n\020getLiveResources\022(.org.apache.sl" +
- "ider.api.EmptyPayloadProto\032\'.org.apache.",
- "slider.api.WrappedJsonProto\022\214\001\n\031getClien" +
- "tCertificateStore\0226.org.apache.slider.ap" +
- "i.GetCertificateStoreRequestProto\0327.org." +
- "apache.slider.api.GetCertificateStoreRes" +
- "ponseProtoB5\n\033org.apache.slider.api.prot" +
- "oB\020SliderClusterAPI\210\001\001\240\001\001"
+ "r.api.WrappedJsonProto\022e\n\020getModelResolv" +
+ "ed\022(.org.apache.slider.api.EmptyPayloadP" +
+ "roto\032\'.org.apache.slider.api.WrappedJson" +
+ "Proto\022l\n\027getModelResolvedAppconf\022(.org.a" +
+ "pache.slider.api.EmptyPayloadProto\032\'.org",
+ ".apache.slider.api.WrappedJsonProto\022n\n\031g" +
+ "etModelResolvedResources\022(.org.apache.sl" +
+ "ider.api.EmptyPayloadProto\032\'.org.apache." +
+ "slider.api.WrappedJsonProto\022e\n\020getLiveRe" +
+ "sources\022(.org.apache.slider.api.EmptyPay" +
+ "loadProto\032\'.org.apache.slider.api.Wrappe" +
+ "dJsonProto\022\214\001\n\031getClientCertificateStore" +
+ "\0226.org.apache.slider.api.GetCertificateS" +
+ "toreRequestProto\0327.org.apache.slider.api" +
+ ".GetCertificateStoreResponseProtoB5\n\033org",
+ ".apache.slider.api.protoB\020SliderClusterA" +
+ "PI\210\001\001\240\001\001"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
index 33a875e..482b0c7 100644
--- a/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
+++ b/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
@@ -28,41 +28,34 @@ import org.codehaus.jackson.map.annotate.JsonSerialize;
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class NodeEntryInformation {
- public int priority;
-
- /**
- * instance explicitly requested on this node: it's OK if an allocation
- * comes in that has not been (and when that happens, this count should
- * not drop).
- */
- public int requested;
-
- /** number of starting instances */
- public int starting;
-
- /** incrementing counter of instances that failed to start */
- public int startFailed;
/** incrementing counter of instances that failed */
public int failed;
- /**
- * Counter of "failed recently" events. These are all failures
- * which have happened since it was last reset.
- */
+ /** Counter of "failed recently" events. */
public int failedRecently;
+ /** timestamp of last use */
+ public long lastUsed;
+
+ /** Number of live nodes. */
+ public int live;
+
/** incrementing counter of instances that have been pre-empted. */
public int preempted;
- /**
- * Number of live nodes.
- */
- public int live;
+ /** Priority */
+ public int priority;
+
+ /** instance explicitly requested on this node */
+ public int requested;
/** number of containers being released off this node */
public int releasing;
- /** timestamp of last use */
- public long lastUsed;
+ /** incrementing counter of instances that failed to start */
+ public int startFailed;
+
+ /** number of starting instances */
+ public int starting;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
index 842db14..049ee52 100644
--- a/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
+++ b/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
@@ -31,14 +31,12 @@ import java.util.List;
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class NodeInformation {
+ public String healthReport;
public String hostname;
- public String state;
public String httpAddress;
- public String rackName;
public String labels;
- public String healthReport;
public long lastUpdated;
+ public String rackName;
+ public String state;
public List<NodeEntryInformation> entries = new ArrayList<>();
-
-
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java b/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
index bab451f..3627687 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
@@ -99,7 +99,7 @@ public interface SliderClientAPI extends Service {
* @throws YarnException Yarn problems
* @throws IOException other problems
* @throws BadCommandArgumentsException bad arguments.
- * @deperecated use #actionKeytab
+ * @deprecated use #actionKeytab
*/
int actionInstallKeytab(ActionInstallKeytabArgs installKeytabInfo)
throws YarnException, IOException;
@@ -111,7 +111,7 @@ public interface SliderClientAPI extends Service {
* @throws YarnException Yarn problems
* @throws IOException other problems
* @throws BadCommandArgumentsException bad arguments.
- * @deperecated use #actionKeytab
+ * @deprecated use #actionKeytab
*/
int actionKeytab(ActionKeytabArgs keytabInfo)
throws YarnException, IOException;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
index bada24e..291583d 100644
--- a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderApplicationIpcClient.java
@@ -23,6 +23,7 @@ import org.apache.slider.api.SliderClusterProtocol;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.api.types.PingInformation;
import org.apache.slider.api.SliderApplicationApi;
import org.apache.slider.core.conf.AggregateConf;
@@ -186,8 +187,7 @@ public class SliderApplicationIpcClient implements SliderApplicationApi {
}
@Override
- public ComponentInformation getComponent(String componentName) throws
- IOException {
+ public ComponentInformation getComponent(String componentName) throws IOException {
try {
return operations.getComponent(componentName);
} catch (IOException e) {
@@ -196,6 +196,24 @@ public class SliderApplicationIpcClient implements SliderApplicationApi {
}
@Override
+ public Map<String, NodeInformation> getLiveNodes() throws IOException {
+ try {
+ return operations.getLiveNodes();
+ } catch (IOException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
+ public NodeInformation getLiveNode(String hostname) throws IOException {
+ try {
+ return operations.getLiveNode(hostname);
+ } catch (IOException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
public PingInformation ping(String text) throws IOException {
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
index 69dcb3b..e1ec971 100644
--- a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
+++ b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
@@ -30,6 +30,7 @@ import static org.apache.slider.api.proto.RestTypeMarshalling.*;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.api.types.PingInformation;
import org.apache.slider.common.tools.Duration;
import org.apache.slider.core.conf.AggregateConf;
@@ -102,7 +103,7 @@ public class SliderClusterOperations {
*/
public List<ClusterNode> convertNodeWireToClusterNodes(List<Messages.RoleInstanceState> nodes)
throws IOException {
- List<ClusterNode> nodeList = new ArrayList<ClusterNode>(nodes.size());
+ List<ClusterNode> nodeList = new ArrayList<>(nodes.size());
for (Messages.RoleInstanceState node : nodes) {
nodeList.add(ClusterNode.fromProtobuf(node));
}
@@ -116,16 +117,12 @@ public class SliderClusterOperations {
* @throws YarnException
* @throws IOException
*/
- public String echo(String text) throws
- YarnException,
- IOException {
+ public String echo(String text) throws YarnException, IOException {
Messages.EchoRequestProto.Builder builder =
Messages.EchoRequestProto.newBuilder();
builder.setText(text);
- Messages.EchoRequestProto req =
- builder.build();
- Messages.EchoResponseProto response =
- appMaster.echo(req);
+ Messages.EchoRequestProto req = builder.build();
+ Messages.EchoResponseProto response = appMaster.echo(req);
return response.getText();
}
@@ -145,9 +142,7 @@ public class SliderClusterOperations {
try {
return ClusterDescription.fromJson(statusJson);
} catch (JsonParseException e) {
- log.error(
- "Exception " + e + " parsing:\n" + statusJson,
- e);
+ log.error("Exception " + e + " parsing:\n" + statusJson, e);
throw e;
}
}
@@ -191,10 +186,8 @@ public class SliderClusterOperations {
Messages.KillContainerRequestProto.Builder builder =
Messages.KillContainerRequestProto.newBuilder();
builder.setId(id);
- Messages.KillContainerRequestProto req =
- builder.build();
- Messages.KillContainerResponseProto response =
- appMaster.killContainer(req);
+ Messages.KillContainerRequestProto req = builder.build();
+ Messages.KillContainerResponseProto response = appMaster.killContainer(req);
return response.getSuccess();
}
@@ -205,24 +198,19 @@ public class SliderClusterOperations {
* @throws IOException
* @throws YarnException
*/
- public String[] listNodeUUIDsByRole(String role) throws
- IOException,
- YarnException {
+ public String[] listNodeUUIDsByRole(String role) throws IOException, YarnException {
Collection<String> uuidList = innerListNodeUUIDSByRole(role);
String[] uuids = new String[uuidList.size()];
return uuidList.toArray(uuids);
}
- public List<String> innerListNodeUUIDSByRole(String role) throws
- IOException,
- YarnException {
+ public List<String> innerListNodeUUIDSByRole(String role) throws IOException, YarnException {
Messages.ListNodeUUIDsByRoleRequestProto req =
Messages.ListNodeUUIDsByRoleRequestProto
.newBuilder()
.setRole(role)
.build();
- Messages.ListNodeUUIDsByRoleResponseProto resp =
- appMaster.listNodeUUIDsByRole(req);
+ Messages.ListNodeUUIDsByRoleResponseProto resp = appMaster.listNodeUUIDsByRole(req);
return resp.getUuidList();
}
@@ -234,9 +222,8 @@ public class SliderClusterOperations {
* @throws IOException
* @throws YarnException
*/
- public List<ClusterNode> listClusterNodesInRole(String role) throws
- IOException,
- YarnException {
+ public List<ClusterNode> listClusterNodesInRole(String role)
+ throws IOException, YarnException {
Collection<String> uuidList = innerListNodeUUIDSByRole(role);
Messages.GetClusterNodesRequestProto req =
@@ -256,9 +243,8 @@ public class SliderClusterOperations {
* @throws YarnException
*/
@VisibleForTesting
- public List<ClusterNode> listClusterNodes(String[] uuids) throws
- IOException,
- YarnException {
+ public List<ClusterNode> listClusterNodes(String[] uuids)
+ throws IOException, YarnException {
Messages.GetClusterNodesRequestProto req =
Messages.GetClusterNodesRequestProto
@@ -341,8 +327,7 @@ public class SliderClusterOperations {
Messages.FlexClusterRequestProto.newBuilder()
.setClusterSpec(resources.toJson())
.build();
- Messages.FlexClusterResponseProto response =
- appMaster.flexCluster(request);
+ Messages.FlexClusterResponseProto response = appMaster.flexCluster(request);
return response.getResponse();
}
@@ -365,10 +350,8 @@ public class SliderClusterOperations {
}
builder.setSignal(signal);
builder.setDelay(delay);
- Messages.AMSuicideRequestProto req =
- builder.build();
- Messages.AMSuicideResponseProto response =
- appMaster.amSuicide(req);
+ Messages.AMSuicideRequestProto req = builder.build();
+ appMaster.amSuicide(req);
}
/**
@@ -385,45 +368,38 @@ public class SliderClusterOperations {
}
-
public AggregateConf getModelDesired() throws IOException {
return unmarshallToAggregateConf(appMaster.getModelDesired(EMPTY));
}
public ConfTreeOperations getModelDesiredAppconf() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelDesiredAppconf(EMPTY));
+ return unmarshallToCTO(appMaster.getModelDesiredAppconf(EMPTY));
}
public ConfTreeOperations getModelDesiredResources() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelDesiredResources(EMPTY));
+ return unmarshallToCTO(appMaster.getModelDesiredResources(EMPTY));
}
public AggregateConf getModelResolved() throws IOException {
- return unmarshallToAggregateConf(
- appMaster.getModelResolved(EMPTY));
+ return unmarshallToAggregateConf(appMaster.getModelResolved(EMPTY));
}
public ConfTreeOperations getModelResolvedAppconf() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelResolvedAppconf(EMPTY));
+ return unmarshallToCTO(appMaster.getModelResolvedAppconf(EMPTY));
}
public ConfTreeOperations getModelResolvedResources() throws IOException {
- return unmarshallToCTO(
- appMaster.getModelDesiredResources(EMPTY));
+ return unmarshallToCTO(appMaster.getModelDesiredResources(EMPTY));
}
public ConfTreeOperations getLiveResources() throws IOException {
- return unmarshallToCTO(
- appMaster.getLiveResources(EMPTY));
+ return unmarshallToCTO(appMaster.getLiveResources(EMPTY));
}
@@ -439,8 +415,7 @@ public class SliderClusterOperations {
+ ") does not match the number of records returned: "
+ records);
}
- Map<String, ContainerInformation> map =
- new HashMap<String, ContainerInformation>(namesCount);
+ Map<String, ContainerInformation> map = new HashMap<>(namesCount);
for (int i = 0; i < namesCount; i++) {
map.put(response.getNames(i), unmarshall(response.getContainers(i)));
}
@@ -473,42 +448,59 @@ public class SliderClusterOperations {
int namesCount = response.getNamesCount();
int records = response.getComponentsCount();
if (namesCount != records) {
- throw new IOException("Number of names returned (" + namesCount
- +
- ") does not match the number of records returned: "
- + records);
+ throw new IOException(
+ "Number of names returned (" + namesCount + ")" +
+ " does not match the number of records returned: " + records);
}
- Map<String, ComponentInformation> map =
- new HashMap<String, ComponentInformation>(namesCount);
+ Map<String, ComponentInformation> map = new HashMap<>(namesCount);
for (int i = 0; i < namesCount; i++) {
map.put(response.getNames(i), unmarshall(response.getComponents(i)));
}
return map;
}
-
public ComponentInformation getComponent(String componentName)
throws IOException {
Messages.GetLiveComponentRequestProto.Builder builder =
Messages.GetLiveComponentRequestProto.newBuilder();
builder.setName(componentName);
- Messages.ComponentInformationProto proto =
- appMaster.getLiveComponent(builder.build());
-
+ Messages.ComponentInformationProto proto = appMaster.getLiveComponent(builder.build());
return unmarshall(proto);
}
-
+ public Map<String, NodeInformation> getLiveNodes() throws IOException {
+ Messages.GetLiveNodesResponseProto response =
+ appMaster.getLiveNodes(Messages.GetLiveNodesRequestProto.newBuilder().build());
+
+ int namesCount = response.getNamesCount();
+ int records = response.getNodesCount();
+ if (namesCount != records) {
+ throw new IOException(
+ "Number of names returned (" + namesCount + ")" +
+ " does not match the number of records returned: " + records);
+ }
+ Map<String, NodeInformation> map = new HashMap<>(namesCount);
+ for (int i = 0; i < namesCount; i++) {
+ map.put(response.getNames(i), unmarshall(response.getNodes(i)));
+ }
+ return map;
+ }
+
+ public NodeInformation getLiveNode(String hostname) throws IOException {
+ Messages.GetLiveNodeRequestProto.Builder builder =
+ Messages.GetLiveNodeRequestProto.newBuilder();
+ builder.setName(hostname);
+ return unmarshall(appMaster.getLiveNode(builder.build()));
+ }
+
public PingInformation ping(String text) throws IOException {
return null;
}
-
public void stop(String text) throws IOException {
amSuicide(text, 3, 0);
}
-
public ApplicationLivenessInformation getApplicationLiveness() throws
IOException {
Messages.ApplicationLivenessInformationProto proto =
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java b/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
index b1aa633..ce2817a 100644
--- a/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/rest/SliderApplicationApiRestClient.java
@@ -31,6 +31,7 @@ import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
import org.apache.slider.api.SliderApplicationApi;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.core.conf.ConfTreeOperations;
@@ -232,8 +233,7 @@ public class SliderApplicationApiRestClient extends BaseRestClient
public Map<String, ComponentInformation> enumComponents() throws
IOException {
return getApplicationResource(LIVE_COMPONENTS,
- new GenericType<Map<String, ComponentInformation>>() {
- });
+ new GenericType<Map<String, ComponentInformation>>() { });
}
@Override
@@ -244,6 +244,18 @@ public class SliderApplicationApiRestClient extends BaseRestClient
}
@Override
+ public Map<String, NodeInformation> getLiveNodes() throws IOException {
+ return getApplicationResource(LIVE_NODES,
+ new GenericType<Map<String, NodeInformation>>() { });
+ }
+
+ @Override
+ public NodeInformation getLiveNode(String hostname) throws IOException {
+ return getApplicationResource(LIVE_COMPONENTS + "/" + hostname,
+ NodeInformation.class);
+ }
+
+ @Override
public PingInformation ping(String text) throws IOException {
return pingPost(text);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/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 0e7e295..92b602f 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
@@ -20,6 +20,9 @@ package org.apache.slider.server.appmaster;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
+import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
import com.google.common.base.Preconditions;
import com.google.protobuf.BlockingService;
@@ -221,10 +224,13 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
* Deployed in {@link #serviceInit(Configuration)}
*/
private final MetricsAndMonitoring metricsAndMonitoring = new MetricsAndMonitoring();
+
/**
* metrics registry
*/
public MetricRegistry metrics;
+
+ /** Error string on chaos monkey launch failure action: {@value} */
public static final String E_TRIGGERED_LAUNCH_FAILURE =
"Chaos monkey triggered launch failure";
@@ -244,7 +250,6 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
@SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
public NMClientAsync nmClientAsync;
-// YarnConfiguration conf;
/**
* token blob
*/
@@ -484,16 +489,19 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
false);
SliderUtils.validateSliderServerEnvironment(log, dependencyChecks);
- // create app state and monitoring
+ // create and register monitoring services
addService(metricsAndMonitoring);
metrics = metricsAndMonitoring.getMetrics();
+/*
+ metrics.registerAll(new ThreadStatesGaugeSet());
+ metrics.registerAll(new MemoryUsageGaugeSet());
+ metrics.registerAll(new GarbageCollectorMetricSet());
-
+*/
contentCache = ApplicationResouceContentCacheFactory.createContentCache(
stateForProviders);
-
- executorService = new WorkflowExecutorService<ExecutorService>("AmExecutor",
+ executorService = new WorkflowExecutorService<>("AmExecutor",
Executors.newFixedThreadPool(2,
new ServiceThreadFactory("AmExecutor", true)));
addService(executorService);
@@ -1647,7 +1655,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
// If components are specified as well, then grab all the containers of
// each of the components (roles)
if (CollectionUtils.isNotEmpty(components)) {
- Map<ContainerId, RoleInstance> liveContainers = appState.getLiveNodes();
+ Map<ContainerId, RoleInstance> liveContainers = appState.getLiveContainers();
if (CollectionUtils.isNotEmpty(liveContainers.keySet())) {
Map<String, Set<String>> roleContainerMap = prepareRoleContainerMap(liveContainers);
for (String component : components) {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
new file mode 100644
index 0000000..23ea61d
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import com.codahale.metrics.Counting;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Metric;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * A bool metric, mapped to an integer. true maps to 1, false to zero,
+ */
+public class BoolMetric implements Metric, Gauge<Integer> {
+
+ private final AtomicBoolean value;
+
+ public BoolMetric(boolean b) {
+ value = new AtomicBoolean(b);
+ }
+
+ public void set(boolean b) {
+ value.set(b);
+ }
+
+ public boolean get() {
+ return value.get();
+ }
+
+ @Override
+ public Integer getValue() {
+ return value.get() ? 1 : 0;
+ }
+
+ /**
+ * Evaluate from a string. Returns true if the string is considered to match 'true',
+ * false otherwise.
+ * @param s source
+ * @return true if the input parses to an integer other than 0. False if it doesn't parse
+ * or parses to 0.
+ */
+ public boolean fromString(String s) {
+ try {
+ return Integer.valueOf(s) != 0;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ BoolMetric that = (BoolMetric) o;
+ return get() == that.get();
+ }
+
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java
new file mode 100644
index 0000000..08f61ec
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/LongGauge.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Metric;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * This is a long which acts as a gauge
+ */
+public class LongGauge implements Metric, Gauge<Long> {
+
+ private final AtomicLong value;
+
+ /**
+ * Instantiate
+ * @param val current value
+ */
+ public LongGauge(long val) {
+ this.value = new AtomicLong(val);
+ }
+
+ public LongGauge() {
+ this(0);
+ }
+
+ /**
+ * Set to a new value.
+ * @param val value
+ */
+ public synchronized void set(long val) {
+ value.set(val);
+ }
+
+ public void inc() {
+ inc(1);
+ }
+
+ public void dec() {
+ dec(1);
+ }
+
+ public synchronized void inc(int delta) {
+ set(value.get() + delta);
+ }
+
+ public synchronized void dec(int delta) {
+ set(value.get() - delta);
+ }
+
+ public long get() {
+ return value.get();
+ }
+
+ @Override
+ public Long getValue() {
+ return get();
+ }
+
+ @Override
+ public String toString() {
+ return value.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return value.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return value.equals(obj);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
index 58d9eb3..02ab7bc 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MeterAndCounter.java
@@ -74,6 +74,11 @@ public class MeterAndCounter {
meter.mark();
}
+ public void inc() {
+ mark();
+ }
+
+
@Override
public boolean equals(Object o) {
if (this == o) {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
index 8de27e7..cced42a 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
@@ -18,14 +18,13 @@
package org.apache.slider.server.appmaster.management;
+import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.health.HealthCheckRegistry;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.service.AbstractService;
import org.apache.hadoop.service.CompositeService;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -100,7 +99,7 @@ public class MetricsAndMonitoring extends CompositeService {
}
/**
- * Get a specific meter and mark it
+ * Get a specific meter and mark it. This will create and register it on demand.
* @param name name of meter/counter
*/
public void markMeterAndCounter(String name) {
@@ -109,6 +108,25 @@ public class MetricsAndMonitoring extends CompositeService {
}
/**
+ * Given a {@link Metric}, registers it under the given name.
+ *
+ * @param name the name of the metric
+ * @param metric the metric
+ * @param <T> the type of the metric
+ * @return {@code metric}
+ * @throws IllegalArgumentException if the name is already registered
+ */
+ public <T extends Metric> T register(String name, T metric) throws IllegalArgumentException {
+ return metrics.register(name, metric);
+ }
+
+ public <T extends Metric> T register(Class<?> klass, T metric, String... names)
+ throws IllegalArgumentException {
+ return register(MetricRegistry.name(klass, names), metric);
+ }
+
+
+ /**
* Add an event (synchronized)
* @param event event
*/
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java
new file mode 100644
index 0000000..80e88fc
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RangeLimitedCounter.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Counting;
+import com.codahale.metrics.Metric;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * This is a counter whose range can be given a min and a max
+ */
+public class RangeLimitedCounter implements Metric, Counting {
+
+ private final AtomicLong value;
+ private final long min, max;
+
+ /**
+ * Instantiate
+ * @param val current value
+ * @param min minimum value
+ * @param max max value (or 0 for no max)
+ */
+ public RangeLimitedCounter(long val, long min, long max) {
+ this.value = new AtomicLong(val);
+ this.min = min;
+ this.max = max;
+ }
+
+ /**
+ * Set to a new value. If below the min, set to the minimum. If the max is non
+ * zero and the value is above that maximum, set it to the maximum instead.
+ * @param val value
+ */
+ public synchronized void set(long val) {
+ if (val < min) {
+ val = min;
+ } else if (max > 0 && val > max) {
+ val = max;
+ }
+ value.set(val);
+ }
+
+ public void inc() {
+ inc(1);
+ }
+
+ public void dec() {
+ dec(1);
+ }
+
+ public synchronized void inc(int delta) {
+ set(value.get() + delta);
+ }
+
+ public synchronized void dec(int delta) {
+ set(value.get() - delta);
+ }
+
+ public long get() {
+ return value.get();
+ }
+
+ @Override
+ public long getCount() {
+ return value.get();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java
new file mode 100644
index 0000000..c30e749
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/Timestamp.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+/**
+ * A timestamp metric
+ */
+public class Timestamp extends LongGauge {
+
+ public Timestamp(long val) {
+ super(val);
+ }
+
+ public Timestamp() {
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
index 50534d2..f0d9063 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
@@ -216,6 +216,26 @@ public class SliderClusterProtocolPBImpl implements SliderClusterProtocolPB {
}
@Override
+ public Messages.GetLiveNodesResponseProto getLiveNodes(RpcController controller,
+ Messages.GetLiveNodesRequestProto request) throws ServiceException {
+ try {
+ return real.getLiveNodes(request);
+ } catch (Exception e) {
+ throw wrap(e);
+ }
+ }
+
+ @Override
+ public Messages.NodeInformationProto getLiveNode(RpcController controller,
+ Messages.GetLiveNodeRequestProto request) throws ServiceException {
+ try {
+ return real.getLiveNode(request);
+ } catch (Exception e) {
+ throw wrap(e);
+ }
+ }
+
+ @Override
public Messages.WrappedJsonProto getModelDesired(RpcController controller,
Messages.EmptyPayloadProto request) throws ServiceException {
try {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/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 2d927c6..b230816 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
@@ -263,6 +263,26 @@ public class SliderClusterProtocolProxy implements SliderClusterProtocol {
}
@Override
+ public Messages.GetLiveNodesResponseProto getLiveNodes(Messages.GetLiveNodesRequestProto request)
+ throws IOException {
+ try {
+ return endpoint.getLiveNodes(NULL_CONTROLLER, request);
+ } catch (ServiceException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
+ public Messages.NodeInformationProto getLiveNode(Messages.GetLiveNodeRequestProto request)
+ throws IOException {
+ try {
+ return endpoint.getLiveNode(NULL_CONTROLLER, request);
+ } catch (ServiceException e) {
+ throw convert(e);
+ }
+ }
+
+ @Override
public Messages.WrappedJsonProto getModelDesired(Messages.EmptyPayloadProto request) throws IOException {
try {
return endpoint.getModelDesired(NULL_CONTROLLER, request);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
index 1581482..bb8f512 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
@@ -30,9 +30,9 @@ import org.apache.slider.api.proto.Messages;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
-import org.apache.slider.core.exceptions.NoSuchNodeException;
import org.apache.slider.core.exceptions.ServiceNotReadyException;
import org.apache.slider.core.exceptions.SliderException;
import org.apache.slider.core.main.LauncherExitCodes;
@@ -51,7 +51,6 @@ import org.apache.slider.server.appmaster.state.RoleInstance;
import org.apache.slider.server.appmaster.state.StateAccessForProviders;
import org.apache.slider.server.appmaster.web.rest.application.resources.ContentCache;
import org.apache.slider.server.services.security.CertificateManager;
-import org.apache.slider.server.services.security.KeystoreGenerator;
import org.apache.slider.server.services.security.SecurityStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,6 +64,7 @@ import java.util.concurrent.TimeUnit;
import static org.apache.slider.api.proto.RestTypeMarshalling.marshall;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_COMPONENTS;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_CONTAINERS;
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_NODES;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_RESOURCES;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED;
import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED_APPCONF;
@@ -273,7 +273,7 @@ public class SliderIPCService extends AbstractService
String role = request.getRole();
Messages.ListNodeUUIDsByRoleResponseProto.Builder builder =
Messages.ListNodeUUIDsByRoleResponseProto.newBuilder();
- List<RoleInstance> nodes = state.enumLiveNodesInRole(role);
+ List<RoleInstance> nodes = state.enumLiveInstancesInRole(role);
for (RoleInstance node : nodes) {
builder.addUuid(node.id);
}
@@ -373,13 +373,11 @@ public class SliderIPCService extends AbstractService
Messages.GetLiveContainersRequestProto request)
throws IOException {
Map<String, ContainerInformation> infoMap =
- (Map<String, ContainerInformation>) cache.lookupWithIOE(
- LIVE_CONTAINERS);
+ (Map<String, ContainerInformation>) cache.lookupWithIOE(LIVE_CONTAINERS);
Messages.GetLiveContainersResponseProto.Builder builder =
Messages.GetLiveContainersResponseProto.newBuilder();
- for (Map.Entry<String, ContainerInformation> entry : infoMap
- .entrySet()) {
+ for (Map.Entry<String, ContainerInformation> entry : infoMap.entrySet()) {
builder.addNames(entry.getKey());
builder.addContainers(marshall(entry.getValue()));
}
@@ -387,8 +385,8 @@ public class SliderIPCService extends AbstractService
}
@Override
- public Messages.ContainerInformationProto getLiveContainer(Messages.GetLiveContainerRequestProto request) throws
- IOException {
+ public Messages.ContainerInformationProto getLiveContainer(Messages.GetLiveContainerRequestProto request)
+ throws IOException {
String containerId = request.getContainerId();
RoleInstance id = state.getLiveInstanceByContainerID(containerId);
ContainerInformation containerInformation = id.serialize();
@@ -396,22 +394,61 @@ public class SliderIPCService extends AbstractService
}
@Override
- public Messages.GetLiveComponentsResponseProto getLiveComponents(Messages.GetLiveComponentsRequestProto request) throws
- IOException {
+ public Messages.GetLiveComponentsResponseProto getLiveComponents(Messages.GetLiveComponentsRequestProto request)
+ throws IOException {
Map<String, ComponentInformation> infoMap =
- (Map<String, ComponentInformation>) cache.lookupWithIOE(
- LIVE_COMPONENTS);
+ (Map<String, ComponentInformation>) cache.lookupWithIOE(LIVE_COMPONENTS);
Messages.GetLiveComponentsResponseProto.Builder builder =
Messages.GetLiveComponentsResponseProto.newBuilder();
- for (Map.Entry<String, ComponentInformation> entry : infoMap
- .entrySet()) {
+ for (Map.Entry<String, ComponentInformation> entry : infoMap.entrySet()) {
builder.addNames(entry.getKey());
builder.addComponents(marshall(entry.getValue()));
}
return builder.build();
}
+
+ @Override
+ public Messages.ComponentInformationProto getLiveComponent(Messages.GetLiveComponentRequestProto request)
+ throws IOException {
+ String name = request.getName();
+ try {
+ return marshall(state.getComponentInformation(name));
+ } catch (YarnRuntimeException e) {
+ throw new FileNotFoundException("Unknown component: " + name);
+ }
+ }
+
+ @Override
+ public Messages.GetLiveNodesResponseProto getLiveNodes(Messages.GetLiveNodesRequestProto request)
+ throws IOException {
+ Map<String, NodeInformation> infoMap =
+ (Map<String, NodeInformation>) cache.lookupWithIOE(LIVE_NODES);
+ Messages.GetLiveNodesResponseProto.Builder builder =
+ Messages.GetLiveNodesResponseProto.newBuilder();
+
+ for (Map.Entry<String, NodeInformation> entry : infoMap.entrySet()) {
+ builder.addNames(entry.getKey());
+ builder.addNodes(marshall(entry.getValue()));
+ }
+ return builder.build();
+ }
+
+
+ @Override
+ public Messages.NodeInformationProto getLiveNode(Messages.GetLiveNodeRequestProto request)
+ throws IOException {
+ String name = request.getName();
+ NodeInformation nodeInformation = state.getNodeInformation(name);
+ if (nodeInformation != null) {
+ return marshall(nodeInformation);
+ } else {
+ throw new FileNotFoundException("Unknown host: " + name);
+ }
+ }
+
+
@Override
public Messages.WrappedJsonProto getModelDesired(Messages.EmptyPayloadProto request) throws IOException {
return lookupAggregateConf(MODEL_DESIRED);
@@ -447,17 +484,6 @@ public class SliderIPCService extends AbstractService
return lookupConfTree(LIVE_RESOURCES);
}
- @Override
- public Messages.ComponentInformationProto getLiveComponent(Messages.GetLiveComponentRequestProto request) throws
- IOException {
- String name = request.getName();
- try {
- return marshall(state.getComponentInformation(name));
- } catch (YarnRuntimeException e) {
- throw new FileNotFoundException("Unknown component: " + name);
- }
- }
-
/**
* Helper method; look up an aggregate configuration in the cache from
* a key, or raise an exception
[05/14] incubator-slider git commit: SLIDER-947 build node map from
yarn update reports; serve via REST/IPC. API done;
now trying to make sure RM notifies AM of state, which is being checked via
new metrics
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
index 0f77824..eadb1dc 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
@@ -85,23 +85,9 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
-import static org.apache.slider.api.ResourceKeys.DEF_YARN_CORES;
-import static org.apache.slider.api.ResourceKeys.DEF_YARN_LABEL_EXPRESSION;
-import static org.apache.slider.api.ResourceKeys.DEF_YARN_MEMORY;
-import static org.apache.slider.api.ResourceKeys.YARN_CORES;
-import static org.apache.slider.api.ResourceKeys.YARN_LABEL_EXPRESSION;
-import static org.apache.slider.api.ResourceKeys.YARN_MEMORY;
-import static org.apache.slider.api.RoleKeys.ROLE_FAILED_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_FAILED_RECENTLY_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_FAILED_STARTING_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_NODE_FAILED_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_PREEMPTED_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_RELEASING_INSTANCES;
-import static org.apache.slider.api.RoleKeys.ROLE_REQUESTED_INSTANCES;
-import static org.apache.slider.api.StateValues.STATE_CREATED;
-import static org.apache.slider.api.StateValues.STATE_DESTROYED;
-import static org.apache.slider.api.StateValues.STATE_LIVE;
-import static org.apache.slider.api.StateValues.STATE_SUBMITTED;
+import static org.apache.slider.api.ResourceKeys.*;
+import static org.apache.slider.api.RoleKeys.*;
+import static org.apache.slider.api.StateValues.*;
/**
@@ -214,7 +200,6 @@ public class AppState {
/**
* Count of failed containers
-
*/
private final Counter failedContainerCount = new Counter();
@@ -244,21 +229,21 @@ public class AppState {
* resources, etc. When container started callback is received,
* the node is promoted from here to the containerMap
*/
- private final Map<ContainerId, RoleInstance> startingNodes =
+ private final Map<ContainerId, RoleInstance> startingContainers =
new ConcurrentHashMap<>();
/**
* List of completed nodes. This isn't kept in the CD as it gets too
* big for the RPC responses. Indeed, we should think about how deep to get this
*/
- private final Map<ContainerId, RoleInstance> completedNodes
+ private final Map<ContainerId, RoleInstance> completedContainers
= new ConcurrentHashMap<>();
/**
* Nodes that failed to start.
* Again, kept out of the CD
*/
- private final Map<ContainerId, RoleInstance> failedNodes =
+ private final Map<ContainerId, RoleInstance> failedContainers =
new ConcurrentHashMap<>();
/**
@@ -324,8 +309,7 @@ public class AppState {
private void register(String name, Counter counter) {
this.metricsAndMonitoring.getMetrics().register(
- MetricRegistry.name(AppState.class,
- name), counter);
+ MetricRegistry.name(AppState.class, name), counter);
}
public long getFailedCountainerCount() {
@@ -382,21 +366,20 @@ public class AppState {
return rolePriorityMap;
}
- private Map<ContainerId, RoleInstance> getStartingNodes() {
- return startingNodes;
+ private Map<ContainerId, RoleInstance> getStartingContainers() {
+ return startingContainers;
}
- private Map<ContainerId, RoleInstance> getCompletedNodes() {
- return completedNodes;
+ private Map<ContainerId, RoleInstance> getCompletedContainers() {
+ return completedContainers;
}
- public Map<ContainerId, RoleInstance> getFailedNodes() {
- return failedNodes;
+ public Map<ContainerId, RoleInstance> getFailedContainers() {
+ return failedContainers;
}
-
- public Map<ContainerId, RoleInstance> getLiveNodes() {
+ public Map<ContainerId, RoleInstance> getLiveContainers() {
return liveNodes;
}
@@ -592,8 +575,9 @@ public class AppState {
initClusterStatus();
- // add the roles
+ // set up the role history
roleHistory = new RoleHistory(providerRoles);
+ roleHistory.register(metricsAndMonitoring);
roleHistory.onStart(fs, historyDir);
//rebuild any live containers
@@ -871,11 +855,11 @@ public class AppState {
RoleInstance am = new RoleInstance(container);
am.role = SliderKeys.COMPONENT_AM;
am.roleId = SliderKeys.ROLE_AM_PRIORITY_INDEX;
- am.createTime = System.currentTimeMillis();
- am.startTime = System.currentTimeMillis();
+ am.createTime =now();
+ am.startTime = am.createTime;
appMasterNode = am;
//it is also added to the set of live nodes
- getLiveNodes().put(containerId, am);
+ getLiveContainers().put(containerId, am);
putOwnedContainer(containerId, am);
// patch up the role status
@@ -894,7 +878,7 @@ public class AppState {
* and it will just cause confusion
*/
public void noteAMLaunched() {
- getLiveNodes().put(appMasterNode.getContainerId(), appMasterNode);
+ getLiveContainers().put(appMasterNode.getContainerId(), appMasterNode);
}
/**
@@ -1002,7 +986,7 @@ public class AppState {
*/
public synchronized List<RoleInstance> cloneLiveContainerInfoList() {
List<RoleInstance> allRoleInstances;
- Collection<RoleInstance> values = getLiveNodes().values();
+ Collection<RoleInstance> values = getLiveContainers().values();
allRoleInstances = new ArrayList<>(values);
return allRoleInstances;
}
@@ -1015,7 +999,7 @@ public class AppState {
*/
public synchronized RoleInstance getLiveInstanceByContainerID(String containerId)
throws NoSuchNodeException {
- Collection<RoleInstance> nodes = getLiveNodes().values();
+ Collection<RoleInstance> nodes = getLiveContainers().values();
return findNodeInCollection(containerId, nodes);
}
@@ -1062,7 +1046,7 @@ public class AppState {
//first, a hashmap of those containerIDs is built up
Set<String> uuidSet = new HashSet<String>(containerIDs);
List<RoleInstance> nodes = new ArrayList<RoleInstance>(uuidSet.size());
- Collection<RoleInstance> clusterNodes = getLiveNodes().values();
+ Collection<RoleInstance> clusterNodes = getLiveContainers().values();
for (RoleInstance node : clusterNodes) {
if (uuidSet.contains(node.id)) {
@@ -1080,7 +1064,7 @@ public class AppState {
*/
public synchronized List<RoleInstance> enumLiveNodesInRole(String role) {
List<RoleInstance> nodes = new ArrayList<RoleInstance>();
- Collection<RoleInstance> allRoleInstances = getLiveNodes().values();
+ Collection<RoleInstance> allRoleInstances = getLiveContainers().values();
for (RoleInstance node : allRoleInstances) {
if (role.isEmpty() || role.equals(node.role)) {
nodes.add(node);
@@ -1117,7 +1101,7 @@ public class AppState {
*/
private synchronized Map<String, List<String>> createRoleToInstanceMap() {
Map<String, List<String>> map = new HashMap<String, List<String>>();
- for (RoleInstance node : getLiveNodes().values()) {
+ for (RoleInstance node : getLiveContainers().values()) {
List<String> containers = map.get(node.role);
if (containers == null) {
containers = new ArrayList<String>();
@@ -1136,7 +1120,7 @@ public class AppState {
*/
public synchronized Map<String, Map<String, ClusterNode>> createRoleToClusterNodeMap() {
Map<String, Map<String, ClusterNode>> map = new HashMap<>();
- for (RoleInstance node : getLiveNodes().values()) {
+ for (RoleInstance node : getLiveContainers().values()) {
Map<String, ClusterNode> containers = map.get(node.role);
if (containers == null) {
@@ -1160,7 +1144,7 @@ public class AppState {
instance.state = STATE_SUBMITTED;
instance.container = container;
instance.createTime = now();
- getStartingNodes().put(container.getId(), instance);
+ getStartingContainers().put(container.getId(), instance);
putOwnedContainer(container.getId(), instance);
roleHistory.onContainerStartSubmitted(container, instance);
}
@@ -1354,7 +1338,7 @@ public class AppState {
throw new RuntimeException(
"Unknown role for node " + node);
}
- getLiveNodes().put(node.getContainerId(), node);
+ getLiveContainers().put(node.getContainerId(), node);
//tell role history
roleHistory.onContainerStarted(container);
}
@@ -1395,7 +1379,7 @@ public class AppState {
instance);
}
instance.startTime = now();
- RoleInstance starting = getStartingNodes().remove(containerId);
+ RoleInstance starting = getStartingContainers().remove(containerId);
if (null == starting) {
throw new YarnRuntimeException(
"Container "+ containerId +"%s is already started");
@@ -1423,7 +1407,7 @@ public class AppState {
removeOwnedContainer(containerId);
incFailedCountainerCount();
incStartFailedCountainerCount();
- RoleInstance instance = getStartingNodes().remove(containerId);
+ RoleInstance instance = getStartingContainers().remove(containerId);
if (null != instance) {
RoleStatus roleStatus = lookupRoleStatus(instance.roleId);
String text;
@@ -1434,7 +1418,7 @@ public class AppState {
}
instance.diagnostics = text;
roleStatus.noteFailed(true, text, ContainerOutcome.Failed);
- getFailedNodes().put(containerId, instance);
+ getFailedContainers().put(containerId, instance);
roleHistory.onNodeManagerContainerStartFailed(instance.container);
}
}
@@ -1547,11 +1531,11 @@ public class AppState {
if (roleInstance != null) {
//it was active, move it to failed
incFailedCountainerCount();
- failedNodes.put(containerId, roleInstance);
+ failedContainers.put(containerId, roleInstance);
} else {
// the container may have been noted as failed already, so look
// it up
- roleInstance = failedNodes.get(containerId);
+ roleInstance = failedContainers.get(containerId);
}
if (roleInstance != null) {
int roleId = roleInstance.roleId;
@@ -1605,12 +1589,12 @@ public class AppState {
//remove the node
ContainerId id = status.getContainerId();
log.info("Removing node ID {}", id);
- RoleInstance node = getLiveNodes().remove(id);
+ RoleInstance node = getLiveContainers().remove(id);
if (node != null) {
node.state = STATE_DESTROYED;
node.exitCode = exitStatus;
node.diagnostics = status.getDiagnostics();
- getCompletedNodes().put(id, node);
+ getCompletedContainers().put(id, node);
result.roleInstance = node;
} else {
// not in the list
@@ -1624,7 +1608,7 @@ public class AppState {
// finally, verify the node doesn't exist any more
assert !containersBeingReleased.containsKey(
containerId) : "container still in release queue";
- assert !getLiveNodes().containsKey(
+ assert !getLiveContainers().containsKey(
containerId) : " container still in live nodes";
assert getOwnedContainer(containerId) ==
null : "Container still in active container list";
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
index 0508579..82b2f2a 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/ProviderAppState.java
@@ -25,6 +25,7 @@ import org.apache.slider.api.ClusterDescription;
import org.apache.slider.api.ClusterNode;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTreeOperations;
import org.apache.slider.core.exceptions.NoSuchNodeException;
@@ -118,13 +119,13 @@ public class ProviderAppState implements StateAccessForProviders {
@Override
- public Map<ContainerId, RoleInstance> getFailedNodes() {
- return appState.getFailedNodes();
+ public Map<ContainerId, RoleInstance> getFailedContainers() {
+ return appState.getFailedContainers();
}
@Override
- public Map<ContainerId, RoleInstance> getLiveNodes() {
- return appState.getLiveNodes();
+ public Map<ContainerId, RoleInstance> getLiveContainers() {
+ return appState.getLiveContainers();
}
@Override
@@ -249,10 +250,10 @@ public class ProviderAppState implements StateAccessForProviders {
}
@Override
- public List<RoleInstance> enumLiveNodesInRole(String role) {
- List<RoleInstance> nodes = new ArrayList<RoleInstance>();
+ public List<RoleInstance> enumLiveInstancesInRole(String role) {
+ List<RoleInstance> nodes = new ArrayList<>();
Collection<RoleInstance> allRoleInstances = cloneLiveContainerInfoList();
- getLiveNodes().values();
+ getLiveContainers().values();
for (RoleInstance node : allRoleInstances) {
if (role.isEmpty() || role.equals(node.role)) {
nodes.add(node);
@@ -265,8 +266,7 @@ public class ProviderAppState implements StateAccessForProviders {
public List<RoleInstance> lookupRoleContainers(String component) {
RoleStatus roleStatus = lookupRoleStatus(component);
List<RoleInstance> ownedContainerList = cloneOwnedContainerList();
- List<RoleInstance> matching =
- new ArrayList<>(ownedContainerList.size());
+ List<RoleInstance> matching = new ArrayList<>(ownedContainerList.size());
int roleId = roleStatus.getPriority();
for (RoleInstance instance : ownedContainerList) {
if (instance.roleId == roleId) {
@@ -286,7 +286,16 @@ public class ProviderAppState implements StateAccessForProviders {
info.containers.add(container.id);
}
return info;
+ }
+ @Override
+ public Map<String, NodeInformation> getNodeInformationSnapshot() {
+ return appState.getRoleHistory().getNodeInformationSnapshot();
+ }
+
+ @Override
+ public NodeInformation getNodeInformation(String hostname) {
+ return appState.getRoleHistory().getNodeInformation(hostname);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
index f1e26bb..c22d517 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
@@ -26,9 +26,14 @@ import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.client.api.AMRMClient;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.common.tools.SliderUtils;
import org.apache.slider.core.exceptions.BadConfigException;
import org.apache.slider.providers.ProviderRole;
+import org.apache.slider.server.appmaster.management.BoolMetric;
+import org.apache.slider.server.appmaster.management.LongGauge;
+import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
+import org.apache.slider.server.appmaster.management.Timestamp;
import org.apache.slider.server.appmaster.operations.AbstractRMOperation;
import org.apache.slider.server.avro.LoadedRoleHistory;
import org.apache.slider.server.avro.NodeEntryRecord;
@@ -69,18 +74,25 @@ public class RoleHistory {
private long startTime;
/** Time when saved */
- private long saveTime;
+ private final Timestamp saveTime = new Timestamp(0);
/** If the history was loaded, the time at which the history was saved */
- private long thawedDataTime;
+ private final Timestamp thawedDataTime = new Timestamp(0);
private NodeMap nodemap;
private int roleSize;
- private boolean dirty;
+ private final BoolMetric dirty = new BoolMetric(false);
private FileSystem filesystem;
private Path historyPath;
private RoleHistoryWriter historyWriter = new RoleHistoryWriter();
+ /**
+ * When were the nodes updated in a {@link #onNodesUpdated(List)} call.
+ * If zero: never
+ */
+ private final Timestamp nodesUpdatedTime = new Timestamp(0);
+ private final BoolMetric nodeUpdateReceived = new BoolMetric(false);
+
private OutstandingRequestTracker outstandingRequests =
new OutstandingRequestTracker();
@@ -97,8 +109,7 @@ public class RoleHistory {
private Set<String> failedNodes = new HashSet<>();
- public RoleHistory(List<ProviderRole> providerRoles) throws
- BadConfigException {
+ public RoleHistory(List<ProviderRole> providerRoles) throws BadConfigException {
this.providerRoles = providerRoles;
roleSize = providerRoles.size();
reset();
@@ -106,15 +117,16 @@ public class RoleHistory {
/**
* Reset the variables -this does not adjust the fixed attributes
- * of the history
+ * of the history, but the nodemap and failed node map are cleared.
*/
protected synchronized void reset() throws BadConfigException {
nodemap = new NodeMap(roleSize);
+ failedNodes = new HashSet<>();
resetAvailableNodeLists();
outstandingRequests = new OutstandingRequestTracker();
-
+
Map<Integer, RoleStatus> roleStats = new HashMap<>();
for (ProviderRole providerRole : providerRoles) {
checkProviderRole(roleStats, providerRole);
@@ -122,6 +134,18 @@ public class RoleHistory {
}
/**
+ * Register all metrics with the metrics infra
+ * @param metrics metrics
+ */
+ public void register(MetricsAndMonitoring metrics) {
+ metrics.register(RoleHistory.class, dirty, "dirty");
+ metrics.register(RoleHistory.class, nodesUpdatedTime, "nodes-updated.time");
+ metrics.register(RoleHistory.class, nodeUpdateReceived, "nodes-updated.flag");
+ metrics.register(RoleHistory.class, thawedDataTime, "thawed.time");
+ metrics.register(RoleHistory.class, saveTime, "saved.time");
+ }
+
+ /**
* safety check: make sure the provider role is unique amongst
* the role stats...which is extended with the new role
* @param roleStats role stats
@@ -145,7 +169,6 @@ public class RoleHistory {
roleStats.put(index, new RoleStatus(providerRole));
}
-
/**
* Add a new provider role to the map
* @param providerRole new provider role
@@ -187,8 +210,7 @@ public class RoleHistory {
}
/**
- * Reset the variables -this does not adjust the fixed attributes
- * of the history.
+ * Prepare the history for re-reading its state.
* <p>
* This intended for use by the RoleWriter logic.
* @throws BadConfigException if there is a problem rebuilding the state
@@ -243,21 +265,20 @@ public class RoleHistory {
return discarded;
}
-
public synchronized long getStartTime() {
return startTime;
}
public synchronized long getSaveTime() {
- return saveTime;
+ return saveTime.get();
}
public long getThawedDataTime() {
- return thawedDataTime;
+ return thawedDataTime.get();
}
public void setThawedDataTime(long thawedDataTime) {
- this.thawedDataTime = thawedDataTime;
+ this.thawedDataTime.set(thawedDataTime);
}
public synchronized int getRoleSize() {
@@ -273,11 +294,11 @@ public class RoleHistory {
}
public synchronized boolean isDirty() {
- return dirty;
+ return dirty.get();
}
public synchronized void setDirty(boolean dirty) {
- this.dirty = dirty;
+ this.dirty.set(dirty);
}
/**
@@ -285,8 +306,8 @@ public class RoleHistory {
* @param timestamp timestamp -updates the savetime field
*/
public synchronized void saved(long timestamp) {
- dirty = false;
- saveTime = timestamp;
+ setDirty(false);
+ saveTime.set(timestamp);
}
/**
@@ -299,6 +320,29 @@ public class RoleHistory {
}
/**
+ * Get snapshot of the node map
+ * @return a snapshot of the current node state
+ */
+ public Map<String, NodeInformation> getNodeInformationSnapshot() {
+ NodeMap map = cloneNodemap();
+ Map<String, NodeInformation> result = new HashMap<>(map.size());
+ for (Map.Entry<String, NodeInstance> entry : map.entrySet()) {
+ result.put(entry.getKey(), entry.getValue().serialize());
+ }
+ return result;
+ }
+
+ /**
+ * Get the information on a node
+ * @param hostname hostname
+ * @return the information about that host, or null if there is none
+ */
+ public NodeInformation getNodeInformation(String hostname) {
+ NodeInstance nodeInstance = nodemap.get(hostname);
+ return nodeInstance != null ? nodeInstance.serialize() : null;
+ }
+
+ /**
* Get the node instance for the specific node -creating it if needed
* @param hostname node address
* @return the instance
@@ -379,8 +423,7 @@ public class RoleHistory {
*/
public synchronized Path saveHistoryIfDirty() throws IOException {
if (isDirty()) {
- long time = now();
- return saveHistory(time);
+ return saveHistory(now());
} else {
return null;
}
@@ -403,7 +446,7 @@ public class RoleHistory {
}
/**
- * Handler for bootstrap event
+ * Handler for bootstrap event: there was no history to thaw
*/
public void onBootstrap() {
log.debug("Role history bootstrapped");
@@ -746,12 +789,22 @@ public class RoleHistory {
}
/**
+ * Get the last time the nodes were updated from YARN
+ * @return the update time or zero if never updated.
+ */
+ public long getNodesUpdatedTime() {
+ return nodesUpdatedTime.get();
+ }
+
+ /**
* Update failedNodes and nodemap based on the node state
*
* @param updatedNodes list of updated nodes
*/
public synchronized void onNodesUpdated(List<NodeReport> updatedNodes) {
log.debug("Updating {} nodes", updatedNodes.size());
+ nodesUpdatedTime.set(now());
+ nodeUpdateReceived.set(true);
for (NodeReport updatedNode : updatedNodes) {
String hostname = updatedNode.getNodeId() == null
? null
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
index 56c7cac..2fc00b2 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
@@ -26,6 +26,7 @@ import org.apache.slider.api.ClusterNode;
import org.apache.slider.api.StatusKeys;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTreeOperations;
import org.apache.slider.core.exceptions.NoSuchNodeException;
@@ -87,17 +88,17 @@ public interface StateAccessForProviders {
List<String> listConfigSets();
/**
- * Get a map of all the failed nodes
- * @return map of recorded failed notes
+ * Get a map of all the failed containers
+ * @return map of recorded failed containers
*/
- Map<ContainerId, RoleInstance> getFailedNodes();
+ Map<ContainerId, RoleInstance> getFailedContainers();
/**
- * Get the live nodes.
+ * Get the live containers.
*
* @return the live nodes
*/
- Map<ContainerId, RoleInstance> getLiveNodes();
+ Map<ContainerId, RoleInstance> getLiveContainers();
/**
* Get the current cluster description
@@ -268,11 +269,11 @@ public interface StateAccessForProviders {
Map<String, Map<String, ClusterNode>> getRoleClusterNodeMapping();
/**
- * Enum all nodes by role.
+ * Enum all role instances by role.
* @param role role, or "" for all roles
- * @return a list of nodes, may be empty
+ * @return a list of instances, may be empty
*/
- List<RoleInstance> enumLiveNodesInRole(String role);
+ List<RoleInstance> enumLiveInstancesInRole(String role);
/**
* Look up all containers of a specific component name
@@ -287,4 +288,19 @@ public interface StateAccessForProviders {
* @return a structure describing the component.
*/
ComponentInformation getComponentInformation(String component);
+
+
+ /**
+ * Get a clone of the nodemap.
+ * The instances inside are not cloned
+ * @return a possibly empty map of hostname top info
+ */
+ Map<String, NodeInformation> getNodeInformationSnapshot();
+
+ /**
+ * get information on a node
+ * @param hostname hostname to look up
+ * @return the information, or null if there is no information held.
+ */
+ NodeInformation getNodeInformation(String hostname);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
index 0730a21..a0fe310 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApiImpl.java
@@ -89,8 +89,7 @@ public class WebAppApiImpl implements WebAppApi {
@Override
public Map<String,RoleStatus> getRoleStatusByName() {
List<RoleStatus> roleStatuses = appState.cloneRoleStatusList();
- Map<String, RoleStatus> map =
- new TreeMap<String, RoleStatus>();
+ Map<String, RoleStatus> map = new TreeMap<>();
for (RoleStatus status : roleStatuses) {
map.put(status.getName(), status);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
index 06b7ba2..424107c 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/RestPaths.java
@@ -116,7 +116,6 @@ public class RestPaths {
*/
public static final String SYSTEM_THREADS = SYSTEM + "/threads";
-
/**
* application subpath
*/
@@ -134,7 +133,7 @@ public class RestPaths {
public static final String LIVE_RESOURCES = "/live/resources";
public static final String LIVE_CONTAINERS = "/live/containers";
public static final String LIVE_COMPONENTS = "/live/components";
- public static final String LIVE_NODES = "/live/";
+ public static final String LIVE_NODES = "/live/nodes";
public static final String LIVE_LIVENESS = "/live/liveness";
public static final String LIVE_STATISTICS = "/live/statistics";
public static final String MODEL = "/model";
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
index e7b8fc7..2facf16 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResouceContentCacheFactory.java
@@ -18,10 +18,6 @@
package org.apache.slider.server.appmaster.web.rest.application;
-import org.apache.slider.api.types.ComponentInformation;
-import org.apache.slider.api.types.ContainerInformation;
-import org.apache.slider.core.conf.AggregateConf;
-import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.server.appmaster.state.StateAccessForProviders;
import org.apache.slider.server.appmaster.web.rest.application.resources.AggregateModelRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.AppconfRefresher;
@@ -29,63 +25,39 @@ import org.apache.slider.server.appmaster.web.rest.application.resources.CachedC
import org.apache.slider.server.appmaster.web.rest.application.resources.ContentCache;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveComponentsRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveContainersRefresher;
+import org.apache.slider.server.appmaster.web.rest.application.resources.LiveNodesRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveResourcesRefresher;
import org.apache.slider.server.appmaster.web.rest.application.resources.LiveStatisticsRefresher;
-import java.util.Map;
-
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_COMPONENTS;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_CONTAINERS;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_RESOURCES;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.LIVE_STATISTICS;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED_APPCONF;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_DESIRED_RESOURCES;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_RESOLVED;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_RESOLVED_APPCONF;
-import static org.apache.slider.server.appmaster.web.rest.RestPaths.MODEL_RESOLVED_RESOURCES;
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.*;
public class ApplicationResouceContentCacheFactory {
public static final int LIFESPAN = 500;
/**
* Build the content cache
- * @param cache cache to construct
* @param state state view
*/
public static ContentCache createContentCache(
StateAccessForProviders state) {
ContentCache cache = new ContentCache();
- cache.put(LIVE_RESOURCES,
- new CachedContent<ConfTree>(LIFESPAN,
- new LiveResourcesRefresher(state)));
- cache.put(LIVE_CONTAINERS,
- new CachedContent<Map<String, ContainerInformation>>(LIFESPAN,
- new LiveContainersRefresher(state)));
- cache.put(LIVE_COMPONENTS,
- new CachedContent<Map<String, ComponentInformation>>(LIFESPAN,
- new LiveComponentsRefresher(state)));
+ cache.put(LIVE_RESOURCES, new CachedContent<>(LIFESPAN, new LiveResourcesRefresher(state)));
+ cache.put(LIVE_CONTAINERS, new CachedContent<>(LIFESPAN, new LiveContainersRefresher(state)));
+ cache.put(LIVE_COMPONENTS, new CachedContent<>(LIFESPAN, new LiveComponentsRefresher(state)));
+ cache.put(LIVE_NODES, new CachedContent<>(LIFESPAN, new LiveNodesRefresher(state)));
cache.put(MODEL_DESIRED,
- new CachedContent<AggregateConf>(LIFESPAN,
- new AggregateModelRefresher(state, false)));
+ new CachedContent<>(LIFESPAN, new AggregateModelRefresher(state, false)));
cache.put(MODEL_RESOLVED,
- new CachedContent<AggregateConf>(LIFESPAN,
- new AggregateModelRefresher(state, true)));
+ new CachedContent<>(LIFESPAN, new AggregateModelRefresher(state, true)));
cache.put(MODEL_RESOLVED_APPCONF,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, false, false)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, false, false)));
cache.put(MODEL_RESOLVED_RESOURCES,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, false, true)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, false, true)));
cache.put(MODEL_DESIRED_APPCONF,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, true, false)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, true, false)));
cache.put(MODEL_DESIRED_RESOURCES,
- new CachedContent<ConfTree>(LIFESPAN,
- new AppconfRefresher(state, true, true)));
- cache.put(LIVE_STATISTICS,
- new CachedContent<Map<String, Integer>>(LIFESPAN,
- new LiveStatisticsRefresher(state)));
+ new CachedContent<>(LIFESPAN, new AppconfRefresher(state, true, true)));
+ cache.put(LIVE_STATISTICS, new CachedContent<>(LIFESPAN, new LiveStatisticsRefresher(state)));
return cache;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
index 383bc5a..1b54a31 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/ApplicationResource.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.yarn.webapp.NotFoundException;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
import org.apache.slider.core.exceptions.NoSuchNodeException;
@@ -285,8 +286,7 @@ public class ApplicationResource extends AbstractSliderResource {
public Map<String, ComponentInformation> getLiveComponents() {
markGet(SLIDER_SUBPATH_APPLICATION, LIVE_COMPONENTS);
try {
- return (Map<String, ComponentInformation>) cache.lookup(
- LIVE_COMPONENTS);
+ return (Map<String, ComponentInformation>) cache.lookup(LIVE_COMPONENTS);
} catch (Exception e) {
throw buildException(LIVE_COMPONENTS, e);
}
@@ -346,6 +346,38 @@ TODO: decide what structure to return here, then implement
}
*/
+
+ @GET
+ @Path(LIVE_NODES)
+ @Produces({APPLICATION_JSON})
+ public Map<String, NodeInformation> getLiveNodes() {
+ markGet(SLIDER_SUBPATH_APPLICATION, LIVE_COMPONENTS);
+ try {
+ return (Map<String, NodeInformation>) cache.lookup(LIVE_NODES);
+ } catch (Exception e) {
+ throw buildException(LIVE_COMPONENTS, e);
+ }
+ }
+
+ @GET
+ @Path(LIVE_NODES + "/{node}")
+ @Produces({APPLICATION_JSON})
+ public NodeInformation getLiveNode(@PathParam("node") String node) {
+ markGet(SLIDER_SUBPATH_APPLICATION, LIVE_COMPONENTS);
+ try {
+ NodeInformation ni = state.getNodeInformation(node);
+ if (ni != null) {
+ return ni;
+ } else {
+ throw new NotFoundException("Unknown node: " + node);
+ }
+ } catch (NotFoundException e) {
+ throw e;
+ } catch (Exception e) {
+ throw buildException(LIVE_CONTAINERS + "/" + node, e);
+ }
+ }
+
/**
* Statistics of the application
* @return snapshot statistics
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java
new file mode 100644
index 0000000..d4ab8fe
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/rest/application/resources/LiveNodesRefresher.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.web.rest.application.resources;
+
+import org.apache.slider.api.types.NodeInformation;
+import org.apache.slider.server.appmaster.state.StateAccessForProviders;
+
+import java.util.Map;
+
+/**
+ * Update the live nodes map
+ */
+public class LiveNodesRefresher
+ implements ResourceRefresher<Map<String, NodeInformation>> {
+
+ private final StateAccessForProviders state;
+
+ public LiveNodesRefresher(StateAccessForProviders state) {
+ this.state = state;
+ }
+
+ @Override
+ public Map<String, NodeInformation> refresh() {
+ return state.getNodeInformationSnapshot();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/proto/SliderClusterMessages.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterMessages.proto b/slider-core/src/main/proto/SliderClusterMessages.proto
index 8287f36..50c10e4 100644
--- a/slider-core/src/main/proto/SliderClusterMessages.proto
+++ b/slider-core/src/main/proto/SliderClusterMessages.proto
@@ -384,3 +384,15 @@ message GetCertificateStoreRequestProto {
message GetCertificateStoreResponseProto {
required bytes store = 1;
}
+
+message GetLiveNodesRequestProto {
+}
+
+message GetLiveNodesResponseProto {
+ repeated string names = 1;
+ repeated NodeInformationProto nodes = 2;
+}
+
+message GetLiveNodeRequestProto {
+ required string name = 1;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/proto/SliderClusterProtocol.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterProtocol.proto b/slider-core/src/main/proto/SliderClusterProtocol.proto
index aa59bb4..4221b1d 100644
--- a/slider-core/src/main/proto/SliderClusterProtocol.proto
+++ b/slider-core/src/main/proto/SliderClusterProtocol.proto
@@ -129,18 +129,24 @@ service SliderClusterProtocolPB {
rpc getLivenessInformation(GetApplicationLivenessRequestProto)
returns(ApplicationLivenessInformationProto);
-
+
rpc getLiveContainers(GetLiveContainersRequestProto)
returns(GetLiveContainersResponseProto);
rpc getLiveContainer(GetLiveContainerRequestProto)
returns(ContainerInformationProto);
-
+
rpc getLiveComponents(GetLiveComponentsRequestProto)
returns(GetLiveComponentsResponseProto);
-
+
rpc getLiveComponent(GetLiveComponentRequestProto)
returns(ComponentInformationProto);
+
+ rpc getLiveNodes(GetLiveNodesRequestProto)
+ returns(GetLiveNodesResponseProto);
+
+ rpc getLiveNode(GetLiveNodeRequestProto)
+ returns(NodeInformationProto);
// AggregateConf getModelDesired()
rpc getModelDesired(EmptyPayloadProto)
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
index 58eb49e..6d1bcfc 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/AbstractAppApiTestDelegates.groovy
@@ -24,8 +24,10 @@ import org.apache.slider.api.SliderApplicationApi
import org.apache.slider.api.StateValues
import org.apache.slider.api.types.ComponentInformation
import org.apache.slider.api.types.ContainerInformation
+import org.apache.slider.api.types.NodeInformation
import org.apache.slider.core.conf.ConfTreeOperations
import org.apache.slider.test.Outcome
+import org.junit.Test
import static org.apache.slider.api.ResourceKeys.*
import static org.apache.slider.api.StatusKeys.*
@@ -203,6 +205,17 @@ public abstract class AbstractAppApiTestDelegates extends AbstractRestTestDelega
assert !liveness.requestsOutstanding
}
+
+ public void testListNodes() throws Throwable {
+ describe "Node listing via $appAPI"
+ def liveNodes = appAPI.liveNodes
+ assert liveNodes.size() > 0
+ def h = liveNodes.keySet()[0];
+ def localhost = appAPI.getLiveNode(h)
+
+
+ }
+
/**
* Probe that spins until the liveness query fails
* @param args argument map
@@ -226,6 +239,7 @@ public abstract class AbstractAppApiTestDelegates extends AbstractRestTestDelega
testLiveContainers();
testRESTModel()
testAppLiveness()
+// testListNodes();
}
public void testFlexOperation() {
@@ -263,9 +277,10 @@ public abstract class AbstractAppApiTestDelegates extends AbstractRestTestDelega
String key = args["key"]
String val = args["val"]
def resolved = appAPI.getResolvedResources()
- return Outcome.fromBool(resolved.get(key)==val)
+ return Outcome.fromBool(resolved.get(key) == val)
}
+
/**
* Get the resolved value and push that out as the new state
*
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java b/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
index 9411c3c..f339f6d 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/IpcApiClientTestDelegates.java
@@ -25,5 +25,5 @@ public class IpcApiClientTestDelegates extends AbstractAppApiTestDelegates {
public IpcApiClientTestDelegates(SliderApplicationApi appAPI) {
super(true, appAPI);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
index c0f123d..3d87c28 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
@@ -59,14 +59,14 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
application = appendToURL(appmaster, SLIDER_PATH_APPLICATION)
}
-
public void testCodahaleOperations() throws Throwable {
describe "Codahale operations $this"
getWebPage(appmaster)
getWebPage(appmaster, SYSTEM_THREADS)
getWebPage(appmaster, SYSTEM_HEALTHCHECK)
getWebPage(appmaster, SYSTEM_PING)
- getWebPage(appmaster, SYSTEM_METRICS_JSON)
+ def page = getWebPage(appmaster, SYSTEM_METRICS_JSON)
+ validateCodahaleJson(parseMetrics(page))
}
public void logCodahaleMetrics() {
@@ -78,7 +78,7 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
public void testMimeTypes() throws Throwable {
describe "Mime Types $this"
- HttpOperationResponse response= executeGet(
+ HttpOperationResponse response = executeGet(
appendToURL(appmaster,
SLIDER_PATH_APPLICATION, LIVE_RESOURCES))
response.headers.each { key, val -> log.info("$key $val")}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
index 7e10d30..880d9ca 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
@@ -18,16 +18,8 @@
package org.apache.slider.agent.rest
-import com.sun.jersey.api.client.Client
-import com.sun.jersey.api.client.config.ClientConfig
-import com.sun.jersey.api.json.JSONConfiguration
-import com.sun.jersey.client.apache.ApacheHttpClient
-import com.sun.jersey.client.apache.ApacheHttpClientHandler
-import com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
-import org.apache.commons.httpclient.HttpClient
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
import org.apache.hadoop.registry.client.api.RegistryOperations
import org.apache.hadoop.yarn.api.records.ApplicationReport
import org.apache.slider.agent.AgentMiniClusterTestBase
@@ -42,8 +34,7 @@ import org.apache.slider.core.restclient.HttpOperationResponse
import org.apache.slider.server.appmaster.rpc.RpcBinder
import org.junit.Test
-import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_ENABLED
-import static org.apache.slider.server.appmaster.management.MetricsKeys.METRICS_LOGGING_LOG_INTERVAL
+import static org.apache.slider.server.appmaster.management.MetricsKeys.*
import static org.apache.slider.server.appmaster.web.rest.RestPaths.*
@CompileStatic
@@ -79,7 +70,6 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
// set up url config to match
initHttpTestSupport(launcher.configuration)
-
execOperation(WEB_STARTUP_TIME) {
GET(directAM)
}
@@ -88,7 +78,7 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
def metrics = GET(directAM, SYSTEM_METRICS)
log.info metrics
}
-
+
GET(proxyAM)
log.info GET(proxyAM, SYSTEM_PING)
@@ -96,15 +86,21 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
log.info GET(proxyAM, SYSTEM_HEALTHCHECK)
log.info GET(proxyAM, SYSTEM_METRICS_JSON)
- /*
- Is the back door required? If so, don't test complex verbs via the proxy
- */
+ // using the metrics, await the first node status update
+ execOperation(WEB_STARTUP_TIME) {
+ def metrics = getMetrics(proxyAM)
+ if (!getGaugeAsBool(metrics,
+ "org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag", false)) {
+ throw new IOException("Nodes not updated in $metrics")
+ } else {
+ "true"
+ };
+ }
+ // Is the back door required? If so, don't test complex verbs via the proxy
def proxyComplexVerbs = !SliderXmlConfKeys.X_DEV_INSECURE_REQUIRED
- /*
- * Only do direct complex verbs if the no back door is needed, or if
- * it is enabled
- */
+ // Only do direct complex verbs if the no back door is needed, or if
+ // it is enabled
def directComplexVerbs = proxyComplexVerbs || SLIDER_CONFIG.getBoolean(
SliderXmlConfKeys.X_DEV_INSECURE_WS,
SliderXmlConfKeys.X_DEV_INSECURE_DEFAULT)
@@ -117,14 +113,12 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
log.info "Content type: ${response.contentType}"
describe "proxied response headers from AM Web resources"
- response = executeGet(appendToURL(proxyAM,
- SLIDER_PATH_APPLICATION, LIVE_RESOURCES))
+ response = executeGet(appendToURL(proxyAM, SLIDER_PATH_APPLICATION, LIVE_RESOURCES))
response.headers.each { key, val -> log.info("$key $val") }
log.info "Content type: ${response.contentType}"
-
def ugiClient = createUGIJerseyClient();
-
+
describe "Proxy SliderRestClient Tests"
RestAPIClientTestDelegates proxySliderRestAPI =
new RestAPIClientTestDelegates(proxyAM, ugiClient, proxyComplexVerbs)
@@ -134,8 +128,7 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
RestAPIClientTestDelegates directSliderRestAPI =
new RestAPIClientTestDelegates(directAM, ugiClient, directComplexVerbs)
directSliderRestAPI.testSuiteAll()
-
-
+
describe "Proxy Jersey Tests"
JerseyTestDelegates proxyJerseyTests =
new JerseyTestDelegates(proxyAM, ugiClient, proxyComplexVerbs)
@@ -143,14 +136,12 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
describe "Direct Jersey Tests"
- JerseyTestDelegates directJerseyTests =
- new JerseyTestDelegates(directAM, ugiClient)
+ JerseyTestDelegates directJerseyTests = new JerseyTestDelegates(directAM, ugiClient)
directJerseyTests.testSuiteAll()
describe "Direct Tests"
- LowLevelRestTestDelegates direct =
- new LowLevelRestTestDelegates(directAM, directComplexVerbs)
+ LowLevelRestTestDelegates direct = new LowLevelRestTestDelegates(directAM, directComplexVerbs)
direct.testSuiteAll()
describe "Proxy Tests"
@@ -176,13 +167,10 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
describe( "IPC equivalent operations")
def sliderClusterProtocol = RpcBinder.getProxy(conf, report, 1000)
- SliderApplicationIpcClient ipcClient =
- new SliderApplicationIpcClient(sliderClusterProtocol)
- IpcApiClientTestDelegates ipcDelegates =
- new IpcApiClientTestDelegates(ipcClient)
+ SliderApplicationIpcClient ipcClient = new SliderApplicationIpcClient(sliderClusterProtocol)
+ IpcApiClientTestDelegates ipcDelegates = new IpcApiClientTestDelegates(ipcClient)
ipcDelegates.testSuiteAll()
-
-
+
// log the metrics to show what's up
direct.logCodahaleMetrics();
@@ -193,23 +181,4 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
}
}
- /**
- * Create Jersey client with URL handling by way
- * of the Apache HttpClient classes.
- * @return a Jersey client
- */
- public static Client createJerseyClientHttpClient() {
-
- def httpclient = new HttpClient(new MultiThreadedHttpConnectionManager());
- httpclient.httpConnectionManager.params.connectionTimeout = 10000;
- ClientConfig clientConfig = new DefaultApacheHttpClientConfig();
- clientConfig.features[JSONConfiguration.FEATURE_POJO_MAPPING] = Boolean.TRUE;
-
- def handler = new ApacheHttpClientHandler(httpclient, clientConfig);
-
- def client = new ApacheHttpClient(handler)
- client.followRedirects = true
- return client;
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
index 7838886..d36fdbc 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/appstate/TestMockAppStateAppRestIntegration.groovy
@@ -50,7 +50,6 @@ class TestMockAppStateAppRestIntegration extends BaseMockAppStateTest implements
public void testCachedIntDocument() throws Throwable {
ContentCache cache = new ContentCache()
-
def refresher = new IntRefresher()
assert 0 == refresher.count
def entry = new CachedContentManagedTimer(refresher)
@@ -103,8 +102,8 @@ class TestMockAppStateAppRestIntegration extends BaseMockAppStateTest implements
new ApplicationResource(webAppApi)
def containers = applicationResource.liveContainers
assert containers.size() == instances.size()
-
}
+
/**
* Get a state accessor for the appState field
* @return something to hand down to refreshers and resources
@@ -146,7 +145,7 @@ class TestMockAppStateAppRestIntegration extends BaseMockAppStateTest implements
class CachedContentManagedTimer extends CachedContent {
int time = 0;
-
+
@Override
protected long now() {
return time++;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
index 82192b9..ec202b0 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/monkey/TestMockMonkey.groovy
@@ -148,7 +148,7 @@ class TestMockMonkey extends BaseMockAppStateTest {
public void testContainerKillerIgnoresAM() throws Throwable {
addAppMastertoAppState()
- assert 1 == appState.liveNodes.size()
+ assert 1 == appState.liveContainers.size()
def chaos = new ChaosKillContainer(appState,
queues,
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/rest/publisher/TestPublisherRestResources.groovy
----------------------------------------------------------------------
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 29f0510..e301e6f 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
@@ -107,7 +107,7 @@ class TestPublisherRestResources extends AgentTestBase {
webResource = client.resource(sliderConfigset + "dummy-site");
- execOperation(30000) {
+ execOperation(WEB_STARTUP_TIME) {
GET(sliderConfigset)
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
----------------------------------------------------------------------
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 9d14815..c5808f2 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
@@ -24,6 +24,7 @@ import com.sun.jersey.api.client.config.DefaultClientConfig
import com.sun.jersey.api.json.JSONConfiguration
import com.sun.jersey.client.urlconnection.URLConnectionClientHandler
import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.commons.httpclient.HttpClient
@@ -73,6 +74,7 @@ import javax.ws.rs.core.HttpHeaders
import java.util.concurrent.TimeoutException
import static Arguments.ARG_OPTION
+import static org.apache.slider.server.appmaster.web.rest.RestPaths.SYSTEM_METRICS_JSON
/**
* Static utils for tests in this package and in other test projects.
@@ -655,7 +657,6 @@ class SliderTestUtils extends Assert {
clientConfig);
}
-
/**
* Create a jersey client config with the settings needed for tests
* (e.g. POJO mappings)
@@ -707,7 +708,7 @@ class SliderTestUtils extends Assert {
HttpCacheHeaders.HTTP_HEADER_CACHE_CONTROL_NONE
}
-/**
+ /**
* Assert that a service operation succeeded
* @param service service
*/
@@ -738,6 +739,7 @@ class SliderTestUtils extends Assert {
int actual = instances != null ? instances.size() : 0
return actual
}
+
/**
* Exec a set of commands, wait a few seconds for it to finish.
* @param status code
@@ -752,11 +754,12 @@ class SliderTestUtils extends Assert {
assert status == exitCode
return process
}
+
/**
- * Exec a set of commands, wait a few seconds for it to finish.
- * @param commands
- * @return
- */
+ * Exec a set of commands, wait a few seconds for it to finish.
+ * @param commands
+ * @return
+ */
public static ForkedProcessService exec(List<String> commands) {
ForkedProcessService process;
process = new ForkedProcessService(
@@ -1380,4 +1383,42 @@ class SliderTestUtils extends Assert {
assert list.size() == entries.size()
assert entries.containsAll(list)
}
+
+ public Map parseMetrics(String metrics) {
+ new JsonSlurper().parse(metrics.bytes) as Map
+ }
+
+ public void validateCodahaleJson(Map metricsMap) {
+ assert metricsMap["version"] == "3.0.0"
+ assert metricsMap["gauges"] instanceof Map
+ assert metricsMap["histograms"] instanceof Map
+ assert metricsMap["timers"] instanceof Map
+ }
+
+ public int getGaugeValue(Map metricsMap, String gauge, int defVal) {
+ def entry = metricsMap["gauges"][gauge]
+ if (entry != null) {
+ return entry["value"] as int
+ } else {
+ return defVal
+ }
+ }
+
+ public boolean getGaugeAsBool(Map metricsMap, String gauge, boolean defVal) {
+ return 0 != getGaugeValue(metricsMap, gauge, defVal ? 1 : 0)
+ }
+
+ /**
+ * Fetch and parse the JSON codahale metrics under a path
+ * @param baseUrl base path
+ * @return the fetch, parsed and partially validated JSON mapping
+ */
+ public Map getMetrics(String baseUrl) {
+ def raw = GET(baseUrl, SYSTEM_METRICS_JSON)
+ def metrics = parseMetrics(raw)
+ validateCodahaleJson(metrics)
+ return metrics;
+ }
+
+
}
[03/14] incubator-slider git commit: SLIDER-82 SLIDER-947 build node
map from yarn update reports; serve via REST/IPC
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
index 6c92f46..ba16460 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
@@ -15100,6 +15100,16 @@ public final class Messages {
* <code>optional int32 preempted = 17;</code>
*/
int getPreempted();
+
+ // optional int32 pendingAntiAffineRequestCount = 18;
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ boolean hasPendingAntiAffineRequestCount();
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ int getPendingAntiAffineRequestCount();
}
/**
* Protobuf type {@code org.apache.slider.api.ComponentInformationProto}
@@ -15245,6 +15255,11 @@ public final class Messages {
preempted_ = input.readInt32();
break;
}
+ case 144: {
+ bitField0_ |= 0x00010000;
+ pendingAntiAffineRequestCount_ = input.readInt32();
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -15628,6 +15643,22 @@ public final class Messages {
return preempted_;
}
+ // optional int32 pendingAntiAffineRequestCount = 18;
+ public static final int PENDINGANTIAFFINEREQUESTCOUNT_FIELD_NUMBER = 18;
+ private int pendingAntiAffineRequestCount_;
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public boolean hasPendingAntiAffineRequestCount() {
+ return ((bitField0_ & 0x00010000) == 0x00010000);
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public int getPendingAntiAffineRequestCount() {
+ return pendingAntiAffineRequestCount_;
+ }
+
private void initFields() {
name_ = "";
priority_ = 0;
@@ -15646,6 +15677,7 @@ public final class Messages {
failedRecently_ = 0;
nodeFailed_ = 0;
preempted_ = 0;
+ pendingAntiAffineRequestCount_ = 0;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -15710,6 +15742,9 @@ public final class Messages {
if (((bitField0_ & 0x00008000) == 0x00008000)) {
output.writeInt32(17, preempted_);
}
+ if (((bitField0_ & 0x00010000) == 0x00010000)) {
+ output.writeInt32(18, pendingAntiAffineRequestCount_);
+ }
getUnknownFields().writeTo(output);
}
@@ -15792,6 +15827,10 @@ public final class Messages {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(17, preempted_);
}
+ if (((bitField0_ & 0x00010000) == 0x00010000)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(18, pendingAntiAffineRequestCount_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -15897,6 +15936,11 @@ public final class Messages {
result = result && (getPreempted()
== other.getPreempted());
}
+ result = result && (hasPendingAntiAffineRequestCount() == other.hasPendingAntiAffineRequestCount());
+ if (hasPendingAntiAffineRequestCount()) {
+ result = result && (getPendingAntiAffineRequestCount()
+ == other.getPendingAntiAffineRequestCount());
+ }
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -15978,6 +16022,10 @@ public final class Messages {
hash = (37 * hash) + PREEMPTED_FIELD_NUMBER;
hash = (53 * hash) + getPreempted();
}
+ if (hasPendingAntiAffineRequestCount()) {
+ hash = (37 * hash) + PENDINGANTIAFFINEREQUESTCOUNT_FIELD_NUMBER;
+ hash = (53 * hash) + getPendingAntiAffineRequestCount();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -16126,6 +16174,8 @@ public final class Messages {
bitField0_ = (bitField0_ & ~0x00008000);
preempted_ = 0;
bitField0_ = (bitField0_ & ~0x00010000);
+ pendingAntiAffineRequestCount_ = 0;
+ bitField0_ = (bitField0_ & ~0x00020000);
return this;
}
@@ -16224,6 +16274,10 @@ public final class Messages {
to_bitField0_ |= 0x00008000;
}
result.preempted_ = preempted_;
+ if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+ to_bitField0_ |= 0x00010000;
+ }
+ result.pendingAntiAffineRequestCount_ = pendingAntiAffineRequestCount_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -16302,6 +16356,9 @@ public final class Messages {
if (other.hasPreempted()) {
setPreempted(other.getPreempted());
}
+ if (other.hasPendingAntiAffineRequestCount()) {
+ setPendingAntiAffineRequestCount(other.getPendingAntiAffineRequestCount());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -17032,6 +17089,39 @@ public final class Messages {
return this;
}
+ // optional int32 pendingAntiAffineRequestCount = 18;
+ private int pendingAntiAffineRequestCount_ ;
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public boolean hasPendingAntiAffineRequestCount() {
+ return ((bitField0_ & 0x00020000) == 0x00020000);
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public int getPendingAntiAffineRequestCount() {
+ return pendingAntiAffineRequestCount_;
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public Builder setPendingAntiAffineRequestCount(int value) {
+ bitField0_ |= 0x00020000;
+ pendingAntiAffineRequestCount_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional int32 pendingAntiAffineRequestCount = 18;</code>
+ */
+ public Builder clearPendingAntiAffineRequestCount() {
+ bitField0_ = (bitField0_ & ~0x00020000);
+ pendingAntiAffineRequestCount_ = 0;
+ onChanged();
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:org.apache.slider.api.ComponentInformationProto)
}
@@ -19810,326 +19900,3162 @@ public final class Messages {
return result;
}
- public Builder mergeFrom(com.google.protobuf.Message other) {
- if (other instanceof org.apache.slider.api.proto.Messages.PingInformationProto) {
- return mergeFrom((org.apache.slider.api.proto.Messages.PingInformationProto)other);
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.PingInformationProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.PingInformationProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.PingInformationProto other) {
+ if (other == org.apache.slider.api.proto.Messages.PingInformationProto.getDefaultInstance()) return this;
+ if (other.hasText()) {
+ bitField0_ |= 0x00000001;
+ text_ = other.text_;
+ onChanged();
+ }
+ if (other.hasVerb()) {
+ bitField0_ |= 0x00000002;
+ verb_ = other.verb_;
+ onChanged();
+ }
+ if (other.hasBody()) {
+ bitField0_ |= 0x00000004;
+ body_ = other.body_;
+ onChanged();
+ }
+ if (other.hasTime()) {
+ setTime(other.getTime());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.apache.slider.api.proto.Messages.PingInformationProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.PingInformationProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // optional string text = 1;
+ private java.lang.Object text_ = "";
+ /**
+ * <code>optional string text = 1;</code>
+ */
+ public boolean hasText() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>optional string text = 1;</code>
+ */
+ public java.lang.String getText() {
+ java.lang.Object ref = text_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ text_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>optional string text = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getTextBytes() {
+ java.lang.Object ref = text_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ text_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>optional string text = 1;</code>
+ */
+ public Builder setText(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ text_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional string text = 1;</code>
+ */
+ public Builder clearText() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ text_ = getDefaultInstance().getText();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional string text = 1;</code>
+ */
+ public Builder setTextBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ text_ = value;
+ onChanged();
+ return this;
+ }
+
+ // optional string verb = 2;
+ private java.lang.Object verb_ = "";
+ /**
+ * <code>optional string verb = 2;</code>
+ */
+ public boolean hasVerb() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>optional string verb = 2;</code>
+ */
+ public java.lang.String getVerb() {
+ java.lang.Object ref = verb_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ verb_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>optional string verb = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getVerbBytes() {
+ java.lang.Object ref = verb_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ verb_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>optional string verb = 2;</code>
+ */
+ public Builder setVerb(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ verb_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional string verb = 2;</code>
+ */
+ public Builder clearVerb() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ verb_ = getDefaultInstance().getVerb();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional string verb = 2;</code>
+ */
+ public Builder setVerbBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ verb_ = value;
+ onChanged();
+ return this;
+ }
+
+ // optional string body = 3;
+ private java.lang.Object body_ = "";
+ /**
+ * <code>optional string body = 3;</code>
+ */
+ public boolean hasBody() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>optional string body = 3;</code>
+ */
+ public java.lang.String getBody() {
+ java.lang.Object ref = body_;
+ if (!(ref instanceof java.lang.String)) {
+ java.lang.String s = ((com.google.protobuf.ByteString) ref)
+ .toStringUtf8();
+ body_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>optional string body = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getBodyBytes() {
+ java.lang.Object ref = body_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ body_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>optional string body = 3;</code>
+ */
+ public Builder setBody(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000004;
+ body_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional string body = 3;</code>
+ */
+ public Builder clearBody() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ body_ = getDefaultInstance().getBody();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional string body = 3;</code>
+ */
+ public Builder setBodyBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000004;
+ body_ = value;
+ onChanged();
+ return this;
+ }
+
+ // optional int64 time = 4;
+ private long time_ ;
+ /**
+ * <code>optional int64 time = 4;</code>
+ */
+ public boolean hasTime() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>optional int64 time = 4;</code>
+ */
+ public long getTime() {
+ return time_;
+ }
+ /**
+ * <code>optional int64 time = 4;</code>
+ */
+ public Builder setTime(long value) {
+ bitField0_ |= 0x00000008;
+ time_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional int64 time = 4;</code>
+ */
+ public Builder clearTime() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ time_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.PingInformationProto)
+ }
+
+ static {
+ defaultInstance = new PingInformationProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.PingInformationProto)
+ }
+
+ public interface NodeEntryInformationProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required int32 priority = 1;
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ boolean hasPriority();
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ int getPriority();
+
+ // required int32 requested = 2;
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ boolean hasRequested();
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ int getRequested();
+
+ // required int32 starting = 3;
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ boolean hasStarting();
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ int getStarting();
+
+ // required int32 startFailed = 4;
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ boolean hasStartFailed();
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ int getStartFailed();
+
+ // required int32 failed = 5;
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ boolean hasFailed();
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ int getFailed();
+
+ // required int32 failedRecently = 6;
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ boolean hasFailedRecently();
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ int getFailedRecently();
+
+ // required int32 preempted = 7;
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ boolean hasPreempted();
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ int getPreempted();
+
+ // required int32 live = 8;
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ boolean hasLive();
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ int getLive();
+
+ // required int32 releasing = 9;
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ boolean hasReleasing();
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ int getReleasing();
+
+ // required int64 lastUpdated = 10;
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ boolean hasLastUpdated();
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ long getLastUpdated();
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.NodeEntryInformationProto}
+ */
+ public static final class NodeEntryInformationProto extends
+ com.google.protobuf.GeneratedMessage
+ implements NodeEntryInformationProtoOrBuilder {
+ // Use NodeEntryInformationProto.newBuilder() to construct.
+ private NodeEntryInformationProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private NodeEntryInformationProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final NodeEntryInformationProto defaultInstance;
+ public static NodeEntryInformationProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public NodeEntryInformationProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private NodeEntryInformationProto(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ initFields();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(input, unknownFields,
+ extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 8: {
+ bitField0_ |= 0x00000001;
+ priority_ = input.readInt32();
+ break;
+ }
+ case 16: {
+ bitField0_ |= 0x00000002;
+ requested_ = input.readInt32();
+ break;
+ }
+ case 24: {
+ bitField0_ |= 0x00000004;
+ starting_ = input.readInt32();
+ break;
+ }
+ case 32: {
+ bitField0_ |= 0x00000008;
+ startFailed_ = input.readInt32();
+ break;
+ }
+ case 40: {
+ bitField0_ |= 0x00000010;
+ failed_ = input.readInt32();
+ break;
+ }
+ case 48: {
+ bitField0_ |= 0x00000020;
+ failedRecently_ = input.readInt32();
+ break;
+ }
+ case 56: {
+ bitField0_ |= 0x00000040;
+ preempted_ = input.readInt32();
+ break;
+ }
+ case 64: {
+ bitField0_ |= 0x00000080;
+ live_ = input.readInt32();
+ break;
+ }
+ case 72: {
+ bitField0_ |= 0x00000100;
+ releasing_ = input.readInt32();
+ break;
+ }
+ case 80: {
+ bitField0_ |= 0x00000200;
+ lastUpdated_ = input.readInt64();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.class, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<NodeEntryInformationProto> PARSER =
+ new com.google.protobuf.AbstractParser<NodeEntryInformationProto>() {
+ public NodeEntryInformationProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new NodeEntryInformationProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<NodeEntryInformationProto> getParserForType() {
+ return PARSER;
+ }
+
+ private int bitField0_;
+ // required int32 priority = 1;
+ public static final int PRIORITY_FIELD_NUMBER = 1;
+ private int priority_;
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public boolean hasPriority() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public int getPriority() {
+ return priority_;
+ }
+
+ // required int32 requested = 2;
+ public static final int REQUESTED_FIELD_NUMBER = 2;
+ private int requested_;
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public boolean hasRequested() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public int getRequested() {
+ return requested_;
+ }
+
+ // required int32 starting = 3;
+ public static final int STARTING_FIELD_NUMBER = 3;
+ private int starting_;
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public boolean hasStarting() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public int getStarting() {
+ return starting_;
+ }
+
+ // required int32 startFailed = 4;
+ public static final int STARTFAILED_FIELD_NUMBER = 4;
+ private int startFailed_;
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public boolean hasStartFailed() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public int getStartFailed() {
+ return startFailed_;
+ }
+
+ // required int32 failed = 5;
+ public static final int FAILED_FIELD_NUMBER = 5;
+ private int failed_;
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public boolean hasFailed() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public int getFailed() {
+ return failed_;
+ }
+
+ // required int32 failedRecently = 6;
+ public static final int FAILEDRECENTLY_FIELD_NUMBER = 6;
+ private int failedRecently_;
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public boolean hasFailedRecently() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public int getFailedRecently() {
+ return failedRecently_;
+ }
+
+ // required int32 preempted = 7;
+ public static final int PREEMPTED_FIELD_NUMBER = 7;
+ private int preempted_;
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public boolean hasPreempted() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public int getPreempted() {
+ return preempted_;
+ }
+
+ // required int32 live = 8;
+ public static final int LIVE_FIELD_NUMBER = 8;
+ private int live_;
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public boolean hasLive() {
+ return ((bitField0_ & 0x00000080) == 0x00000080);
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public int getLive() {
+ return live_;
+ }
+
+ // required int32 releasing = 9;
+ public static final int RELEASING_FIELD_NUMBER = 9;
+ private int releasing_;
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public boolean hasReleasing() {
+ return ((bitField0_ & 0x00000100) == 0x00000100);
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public int getReleasing() {
+ return releasing_;
+ }
+
+ // required int64 lastUpdated = 10;
+ public static final int LASTUPDATED_FIELD_NUMBER = 10;
+ private long lastUpdated_;
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ public boolean hasLastUpdated() {
+ return ((bitField0_ & 0x00000200) == 0x00000200);
+ }
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ public long getLastUpdated() {
+ return lastUpdated_;
+ }
+
+ private void initFields() {
+ priority_ = 0;
+ requested_ = 0;
+ starting_ = 0;
+ startFailed_ = 0;
+ failed_ = 0;
+ failedRecently_ = 0;
+ preempted_ = 0;
+ live_ = 0;
+ releasing_ = 0;
+ lastUpdated_ = 0L;
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasPriority()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasRequested()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasStarting()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasStartFailed()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasFailed()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasFailedRecently()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasPreempted()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLive()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasReleasing()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLastUpdated()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ output.writeInt32(1, priority_);
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ output.writeInt32(2, requested_);
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ output.writeInt32(3, starting_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeInt32(4, startFailed_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeInt32(5, failed_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ output.writeInt32(6, failedRecently_);
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ output.writeInt32(7, preempted_);
+ }
+ if (((bitField0_ & 0x00000080) == 0x00000080)) {
+ output.writeInt32(8, live_);
+ }
+ if (((bitField0_ & 0x00000100) == 0x00000100)) {
+ output.writeInt32(9, releasing_);
+ }
+ if (((bitField0_ & 0x00000200) == 0x00000200)) {
+ output.writeInt64(10, lastUpdated_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(1, priority_);
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(2, requested_);
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(3, starting_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(4, startFailed_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(5, failed_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(6, failedRecently_);
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(7, preempted_);
+ }
+ if (((bitField0_ & 0x00000080) == 0x00000080)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(8, live_);
+ }
+ if (((bitField0_ & 0x00000100) == 0x00000100)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(9, releasing_);
+ }
+ if (((bitField0_ & 0x00000200) == 0x00000200)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(10, lastUpdated_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ private static final long serialVersionUID = 0L;
+ @java.lang.Override
+ protected java.lang.Object writeReplace()
+ throws java.io.ObjectStreamException {
+ return super.writeReplace();
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.apache.slider.api.proto.Messages.NodeEntryInformationProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto other = (org.apache.slider.api.proto.Messages.NodeEntryInformationProto) obj;
+
+ boolean result = true;
+ result = result && (hasPriority() == other.hasPriority());
+ if (hasPriority()) {
+ result = result && (getPriority()
+ == other.getPriority());
+ }
+ result = result && (hasRequested() == other.hasRequested());
+ if (hasRequested()) {
+ result = result && (getRequested()
+ == other.getRequested());
+ }
+ result = result && (hasStarting() == other.hasStarting());
+ if (hasStarting()) {
+ result = result && (getStarting()
+ == other.getStarting());
+ }
+ result = result && (hasStartFailed() == other.hasStartFailed());
+ if (hasStartFailed()) {
+ result = result && (getStartFailed()
+ == other.getStartFailed());
+ }
+ result = result && (hasFailed() == other.hasFailed());
+ if (hasFailed()) {
+ result = result && (getFailed()
+ == other.getFailed());
+ }
+ result = result && (hasFailedRecently() == other.hasFailedRecently());
+ if (hasFailedRecently()) {
+ result = result && (getFailedRecently()
+ == other.getFailedRecently());
+ }
+ result = result && (hasPreempted() == other.hasPreempted());
+ if (hasPreempted()) {
+ result = result && (getPreempted()
+ == other.getPreempted());
+ }
+ result = result && (hasLive() == other.hasLive());
+ if (hasLive()) {
+ result = result && (getLive()
+ == other.getLive());
+ }
+ result = result && (hasReleasing() == other.hasReleasing());
+ if (hasReleasing()) {
+ result = result && (getReleasing()
+ == other.getReleasing());
+ }
+ result = result && (hasLastUpdated() == other.hasLastUpdated());
+ if (hasLastUpdated()) {
+ result = result && (getLastUpdated()
+ == other.getLastUpdated());
+ }
+ result = result &&
+ getUnknownFields().equals(other.getUnknownFields());
+ return result;
+ }
+
+ private int memoizedHashCode = 0;
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptorForType().hashCode();
+ if (hasPriority()) {
+ hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
+ hash = (53 * hash) + getPriority();
+ }
+ if (hasRequested()) {
+ hash = (37 * hash) + REQUESTED_FIELD_NUMBER;
+ hash = (53 * hash) + getRequested();
+ }
+ if (hasStarting()) {
+ hash = (37 * hash) + STARTING_FIELD_NUMBER;
+ hash = (53 * hash) + getStarting();
+ }
+ if (hasStartFailed()) {
+ hash = (37 * hash) + STARTFAILED_FIELD_NUMBER;
+ hash = (53 * hash) + getStartFailed();
+ }
+ if (hasFailed()) {
+ hash = (37 * hash) + FAILED_FIELD_NUMBER;
+ hash = (53 * hash) + getFailed();
+ }
+ if (hasFailedRecently()) {
+ hash = (37 * hash) + FAILEDRECENTLY_FIELD_NUMBER;
+ hash = (53 * hash) + getFailedRecently();
+ }
+ if (hasPreempted()) {
+ hash = (37 * hash) + PREEMPTED_FIELD_NUMBER;
+ hash = (53 * hash) + getPreempted();
+ }
+ if (hasLive()) {
+ hash = (37 * hash) + LIVE_FIELD_NUMBER;
+ hash = (53 * hash) + getLive();
+ }
+ if (hasReleasing()) {
+ hash = (37 * hash) + RELEASING_FIELD_NUMBER;
+ hash = (53 * hash) + getReleasing();
+ }
+ if (hasLastUpdated()) {
+ hash = (37 * hash) + LASTUPDATED_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getLastUpdated());
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeEntryInformationProto parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(org.apache.slider.api.proto.Messages.NodeEntryInformationProto prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.NodeEntryInformationProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.class, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.NodeEntryInformationProto.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ priority_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ requested_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ starting_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000004);
+ startFailed_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000008);
+ failed_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000010);
+ failedRecently_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000020);
+ preempted_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000040);
+ live_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000080);
+ releasing_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000100);
+ lastUpdated_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000200);
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(buildPartial());
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeEntryInformationProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto build() {
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto buildPartial() {
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto result = new org.apache.slider.api.proto.Messages.NodeEntryInformationProto(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.priority_ = priority_;
+ if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.requested_ = requested_;
+ if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+ to_bitField0_ |= 0x00000004;
+ }
+ result.starting_ = starting_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+ result.startFailed_ = startFailed_;
+ if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+ to_bitField0_ |= 0x00000010;
+ }
+ result.failed_ = failed_;
+ if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+ to_bitField0_ |= 0x00000020;
+ }
+ result.failedRecently_ = failedRecently_;
+ if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+ to_bitField0_ |= 0x00000040;
+ }
+ result.preempted_ = preempted_;
+ if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+ to_bitField0_ |= 0x00000080;
+ }
+ result.live_ = live_;
+ if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
+ to_bitField0_ |= 0x00000100;
+ }
+ result.releasing_ = releasing_;
+ if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
+ to_bitField0_ |= 0x00000200;
+ }
+ result.lastUpdated_ = lastUpdated_;
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.NodeEntryInformationProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.NodeEntryInformationProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.NodeEntryInformationProto other) {
+ if (other == org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance()) return this;
+ if (other.hasPriority()) {
+ setPriority(other.getPriority());
+ }
+ if (other.hasRequested()) {
+ setRequested(other.getRequested());
+ }
+ if (other.hasStarting()) {
+ setStarting(other.getStarting());
+ }
+ if (other.hasStartFailed()) {
+ setStartFailed(other.getStartFailed());
+ }
+ if (other.hasFailed()) {
+ setFailed(other.getFailed());
+ }
+ if (other.hasFailedRecently()) {
+ setFailedRecently(other.getFailedRecently());
+ }
+ if (other.hasPreempted()) {
+ setPreempted(other.getPreempted());
+ }
+ if (other.hasLive()) {
+ setLive(other.getLive());
+ }
+ if (other.hasReleasing()) {
+ setReleasing(other.getReleasing());
+ }
+ if (other.hasLastUpdated()) {
+ setLastUpdated(other.getLastUpdated());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ if (!hasPriority()) {
+
+ return false;
+ }
+ if (!hasRequested()) {
+
+ return false;
+ }
+ if (!hasStarting()) {
+
+ return false;
+ }
+ if (!hasStartFailed()) {
+
+ return false;
+ }
+ if (!hasFailed()) {
+
+ return false;
+ }
+ if (!hasFailedRecently()) {
+
+ return false;
+ }
+ if (!hasPreempted()) {
+
+ return false;
+ }
+ if (!hasLive()) {
+
+ return false;
+ }
+ if (!hasReleasing()) {
+
+ return false;
+ }
+ if (!hasLastUpdated()) {
+
+ return false;
+ }
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.NodeEntryInformationProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // required int32 priority = 1;
+ private int priority_ ;
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public boolean hasPriority() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public int getPriority() {
+ return priority_;
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public Builder setPriority(int value) {
+ bitField0_ |= 0x00000001;
+ priority_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 priority = 1;</code>
+ */
+ public Builder clearPriority() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ priority_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 requested = 2;
+ private int requested_ ;
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public boolean hasRequested() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public int getRequested() {
+ return requested_;
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public Builder setRequested(int value) {
+ bitField0_ |= 0x00000002;
+ requested_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 requested = 2;</code>
+ */
+ public Builder clearRequested() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ requested_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 starting = 3;
+ private int starting_ ;
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public boolean hasStarting() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public int getStarting() {
+ return starting_;
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public Builder setStarting(int value) {
+ bitField0_ |= 0x00000004;
+ starting_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 starting = 3;</code>
+ */
+ public Builder clearStarting() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ starting_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 startFailed = 4;
+ private int startFailed_ ;
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public boolean hasStartFailed() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public int getStartFailed() {
+ return startFailed_;
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public Builder setStartFailed(int value) {
+ bitField0_ |= 0x00000008;
+ startFailed_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 startFailed = 4;</code>
+ */
+ public Builder clearStartFailed() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ startFailed_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 failed = 5;
+ private int failed_ ;
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public boolean hasFailed() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public int getFailed() {
+ return failed_;
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public Builder setFailed(int value) {
+ bitField0_ |= 0x00000010;
+ failed_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 failed = 5;</code>
+ */
+ public Builder clearFailed() {
+ bitField0_ = (bitField0_ & ~0x00000010);
+ failed_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 failedRecently = 6;
+ private int failedRecently_ ;
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public boolean hasFailedRecently() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public int getFailedRecently() {
+ return failedRecently_;
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public Builder setFailedRecently(int value) {
+ bitField0_ |= 0x00000020;
+ failedRecently_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 failedRecently = 6;</code>
+ */
+ public Builder clearFailedRecently() {
+ bitField0_ = (bitField0_ & ~0x00000020);
+ failedRecently_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 preempted = 7;
+ private int preempted_ ;
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public boolean hasPreempted() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public int getPreempted() {
+ return preempted_;
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public Builder setPreempted(int value) {
+ bitField0_ |= 0x00000040;
+ preempted_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 preempted = 7;</code>
+ */
+ public Builder clearPreempted() {
+ bitField0_ = (bitField0_ & ~0x00000040);
+ preempted_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 live = 8;
+ private int live_ ;
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public boolean hasLive() {
+ return ((bitField0_ & 0x00000080) == 0x00000080);
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public int getLive() {
+ return live_;
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public Builder setLive(int value) {
+ bitField0_ |= 0x00000080;
+ live_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 live = 8;</code>
+ */
+ public Builder clearLive() {
+ bitField0_ = (bitField0_ & ~0x00000080);
+ live_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 releasing = 9;
+ private int releasing_ ;
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public boolean hasReleasing() {
+ return ((bitField0_ & 0x00000100) == 0x00000100);
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public int getReleasing() {
+ return releasing_;
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public Builder setReleasing(int value) {
+ bitField0_ |= 0x00000100;
+ releasing_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int32 releasing = 9;</code>
+ */
+ public Builder clearReleasing() {
+ bitField0_ = (bitField0_ & ~0x00000100);
+ releasing_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int64 lastUpdated = 10;
+ private long lastUpdated_ ;
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ public boolean hasLastUpdated() {
+ return ((bitField0_ & 0x00000200) == 0x00000200);
+ }
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ public long getLastUpdated() {
+ return lastUpdated_;
+ }
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ public Builder setLastUpdated(long value) {
+ bitField0_ |= 0x00000200;
+ lastUpdated_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>required int64 lastUpdated = 10;</code>
+ */
+ public Builder clearLastUpdated() {
+ bitField0_ = (bitField0_ & ~0x00000200);
+ lastUpdated_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.NodeEntryInformationProto)
+ }
+
+ static {
+ defaultInstance = new NodeEntryInformationProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.NodeEntryInformationProto)
+ }
+
+ public interface NodeInformationProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required string hostname = 1;
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ boolean hasHostname();
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ java.lang.String getHostname();
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getHostnameBytes();
+
+ // required string state = 2;
+ /**
+ * <code>required string state = 2;</code>
+ */
+ boolean hasState();
+ /**
+ * <code>required string state = 2;</code>
+ */
+ java.lang.String getState();
+ /**
+ * <code>required string state = 2;</code>
+ */
+ com.google.protobuf.ByteString
+ getStateBytes();
+
+ // required string httpAddress = 3;
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ boolean hasHttpAddress();
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ java.lang.String getHttpAddress();
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ com.google.protobuf.ByteString
+ getHttpAddressBytes();
+
+ // required string rackName = 4;
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ boolean hasRackName();
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ java.lang.String getRackName();
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ com.google.protobuf.ByteString
+ getRackNameBytes();
+
+ // required string labels = 5;
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ boolean hasLabels();
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ java.lang.String getLabels();
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ com.google.protobuf.ByteString
+ getLabelsBytes();
+
+ // required string healthReport = 6;
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ boolean hasHealthReport();
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ java.lang.String getHealthReport();
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ com.google.protobuf.ByteString
+ getHealthReportBytes();
+
+ // required int64 lastUpdated = 7;
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ *
+ * <pre>
+ * repeating NodeEntryProto entries = 8;
+ * </pre>
+ */
+ boolean hasLastUpdated();
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ *
+ * <pre>
+ * repeating NodeEntryProto entries = 8;
+ * </pre>
+ */
+ long getLastUpdated();
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.NodeInformationProto}
+ */
+ public static final class NodeInformationProto extends
+ com.google.protobuf.GeneratedMessage
+ implements NodeInformationProtoOrBuilder {
+ // Use NodeInformationProto.newBuilder() to construct.
+ private NodeInformationProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private NodeInformationProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final NodeInformationProto defaultInstance;
+ public static NodeInformationProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public NodeInformationProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private NodeInformationProto(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ initFields();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(input, unknownFields,
+ extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ bitField0_ |= 0x00000001;
+ hostname_ = input.readBytes();
+ break;
+ }
+ case 18: {
+ bitField0_ |= 0x00000002;
+ state_ = input.readBytes();
+ break;
+ }
+ case 26: {
+ bitField0_ |= 0x00000004;
+ httpAddress_ = input.readBytes();
+ break;
+ }
+ case 34: {
+ bitField0_ |= 0x00000008;
+ rackName_ = input.readBytes();
+ break;
+ }
+ case 42: {
+ bitField0_ |= 0x00000010;
+ labels_ = input.readBytes();
+ break;
+ }
+ case 50: {
+ bitField0_ |= 0x00000020;
+ healthReport_ = input.readBytes();
+ break;
+ }
+ case 56: {
+ bitField0_ |= 0x00000040;
+ lastUpdated_ = input.readInt64();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.class, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<NodeInformationProto> PARSER =
+ new com.google.protobuf.AbstractParser<NodeInformationProto>() {
+ public NodeInformationProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new NodeInformationProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<NodeInformationProto> getParserForType() {
+ return PARSER;
+ }
+
+ private int bitField0_;
+ // required string hostname = 1;
+ public static final int HOSTNAME_FIELD_NUMBER = 1;
+ private java.lang.Object hostname_;
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public boolean hasHostname() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public java.lang.String getHostname() {
+ java.lang.Object ref = hostname_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ hostname_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string hostname = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHostnameBytes() {
+ java.lang.Object ref = hostname_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ hostname_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string state = 2;
+ public static final int STATE_FIELD_NUMBER = 2;
+ private java.lang.Object state_;
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public boolean hasState() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public java.lang.String getState() {
+ java.lang.Object ref = state_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ state_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string state = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getStateBytes() {
+ java.lang.Object ref = state_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ state_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string httpAddress = 3;
+ public static final int HTTPADDRESS_FIELD_NUMBER = 3;
+ private java.lang.Object httpAddress_;
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public boolean hasHttpAddress() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public java.lang.String getHttpAddress() {
+ java.lang.Object ref = httpAddress_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ httpAddress_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string httpAddress = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHttpAddressBytes() {
+ java.lang.Object ref = httpAddress_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ httpAddress_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string rackName = 4;
+ public static final int RACKNAME_FIELD_NUMBER = 4;
+ private java.lang.Object rackName_;
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public boolean hasRackName() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public java.lang.String getRackName() {
+ java.lang.Object ref = rackName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ rackName_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string rackName = 4;</code>
+ */
+ public com.google.protobuf.ByteString
+ getRackNameBytes() {
+ java.lang.Object ref = rackName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ rackName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string labels = 5;
+ public static final int LABELS_FIELD_NUMBER = 5;
+ private java.lang.Object labels_;
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public boolean hasLabels() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public java.lang.String getLabels() {
+ java.lang.Object ref = labels_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ labels_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string labels = 5;</code>
+ */
+ public com.google.protobuf.ByteString
+ getLabelsBytes() {
+ java.lang.Object ref = labels_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ labels_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required string healthReport = 6;
+ public static final int HEALTHREPORT_FIELD_NUMBER = 6;
+ private java.lang.Object healthReport_;
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public boolean hasHealthReport() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public java.lang.String getHealthReport() {
+ java.lang.Object ref = healthReport_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ healthReport_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string healthReport = 6;</code>
+ */
+ public com.google.protobuf.ByteString
+ getHealthReportBytes() {
+ java.lang.Object ref = healthReport_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ healthReport_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ // required int64 lastUpdated = 7;
+ public static final int LASTUPDATED_FIELD_NUMBER = 7;
+ private long lastUpdated_;
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ *
+ * <pre>
+ * repeating NodeEntryProto entries = 8;
+ * </pre>
+ */
+ public boolean hasLastUpdated() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>required int64 lastUpdated = 7;</code>
+ *
+ * <pre>
+ * repeating NodeEntryProto entries = 8;
+ * </pre>
+ */
+ public long getLastUpdated() {
+ return lastUpdated_;
+ }
+
+ private void initFields() {
+ hostname_ = "";
+ state_ = "";
+ httpAddress_ = "";
+ rackName_ = "";
+ labels_ = "";
+ healthReport_ = "";
+ lastUpdated_ = 0L;
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasHostname()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasState()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasHttpAddress()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasRackName()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLabels()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasHealthReport()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLastUpdated()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ output.writeBytes(1, getHostnameBytes());
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ output.writeBytes(2, getStateBytes());
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ output.writeBytes(3, getHttpAddressBytes());
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeBytes(4, getRackNameBytes());
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeBytes(5, getLabelsBytes());
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ output.writeBytes(6, getHealthReportBytes());
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ output.writeInt64(7, lastUpdated_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(1, getHostnameBytes());
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(2, getStateBytes());
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(3, getHttpAddressBytes());
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(4, getRackNameBytes());
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(5, getLabelsBytes());
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(6, getHealthReportBytes());
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(7, lastUpdated_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ private static final long serialVersionUID = 0L;
+ @java.lang.Override
+ protected java.lang.Object writeReplace()
+ throws java.io.ObjectStreamException {
+ return super.writeReplace();
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.apache.slider.api.proto.Messages.NodeInformationProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.NodeInformationProto other = (org.apache.slider.api.proto.Messages.NodeInformationProto) obj;
+
+ boolean result = true;
+ result = result && (hasHostname() == other.hasHostname());
+ if (hasHostname()) {
+ result = result && getHostname()
+ .equals(other.getHostname());
+ }
+ result = result && (hasState() == other.hasState());
+ if (hasState()) {
+ result = result && getState()
+ .equals(other.getState());
+ }
+ result = result && (hasHttpAddress() == other.hasHttpAddress());
+ if (hasHttpAddress()) {
+ result = result && getHttpAddress()
+ .equals(other.getHttpAddress());
+ }
+ result = result && (hasRackName() == other.hasRackName());
+ if (hasRackName()) {
+ result = result && getRackName()
+ .equals(other.getRackName());
+ }
+ result = result && (hasLabels() == other.hasLabels());
+ if (hasLabels()) {
+ result = result && getLabels()
+ .equals(other.getLabels());
+ }
+ result = result && (hasHealthReport() == other.hasHealthReport());
+ if (hasHealthReport()) {
+ result = result && getHealthReport()
+ .equals(other.getHealthReport());
+ }
+ result = result && (hasLastUpdated() == other.hasLastUpdated());
+ if (hasLastUpdated()) {
+ result = result && (getLastUpdated()
+ == other.getLastUpdated());
+ }
+ result = result &&
+ getUnknownFields().equals(other.getUnknownFields());
+ return result;
+ }
+
+ private int memoizedHashCode = 0;
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptorForType().hashCode();
+ if (hasHostname()) {
+ hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
+ hash = (53 * hash) + getHostname().hashCode();
+ }
+ if (hasState()) {
+ hash = (37 * hash) + STATE_FIELD_NUMBER;
+ hash = (53 * hash) + getState().hashCode();
+ }
+ if (hasHttpAddress()) {
+ hash = (37 * hash) + HTTPADDRESS_FIELD_NUMBER;
+ hash = (53 * hash) + getHttpAddress().hashCode();
+ }
+ if (hasRackName()) {
+ hash = (37 * hash) + RACKNAME_FIELD_NUMBER;
+ hash = (53 * hash) + getRackName().hashCode();
+ }
+ if (hasLabels()) {
+ hash = (37 * hash) + LABELS_FIELD_NUMBER;
+ hash = (53 * hash) + getLabels().hashCode();
+ }
+ if (hasHealthReport()) {
+ hash = (37 * hash) + HEALTHREPORT_FIELD_NUMBER;
+ hash = (53 * hash) + getHealthReport().hashCode();
+ }
+ if (hasLastUpdated()) {
+ hash = (37 * hash) + LASTUPDATED_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getLastUpdated());
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.NodeInformationProto parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(org.apache.slider.api.proto.Messages.NodeInformationProto prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.NodeInformationProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.class, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.NodeInformationProto.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ hostname_ = "";
+ bitField0_ = (bitField0_ & ~0x00000001);
+ state_ = "";
+ bitField0_ = (bitField0_ & ~0x00000002);
+ httpAddress_ = "";
+ bitField0_ = (bitField0_ & ~0x00000004);
+ rackName_ = "";
+ bitField0_ = (bitField0_ & ~0x00000008);
+ labels_ = "";
+ bitField0_ = (bitField0_ & ~0x00000010);
+ healthReport_ = "";
+ bitField0_ = (bitField0_ & ~0x00000020);
+ lastUpdated_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000040);
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(buildPartial());
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_NodeInformationProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto build() {
+ org.apache.slider.api.proto.Messages.NodeInformationProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.NodeInformationProto buildPartial() {
+ org.apache.slider.api.proto.Messages.NodeInformationProto result = new org.apache.slider.api.proto.Messages.NodeInformationProto(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.hostname_ = hostname_;
+ if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.state_ = state_;
+ if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+ to_bitField0_ |= 0x00000004;
+ }
+ result.httpAddress_ = httpAddress_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+
<TRUNCATED>
[10/14] incubator-slider git commit: SLIDER-82 IDE suggested AM
cleanup
Posted by st...@apache.org.
SLIDER-82 IDE suggested AM cleanup
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/88a7b34c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/88a7b34c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/88a7b34c
Branch: refs/heads/develop
Commit: 88a7b34cacbbe7b092b7c02dbe1e653772fc441e
Parents: e2d8ab0
Author: Steve Loughran <st...@apache.org>
Authored: Mon Oct 19 11:09:10 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Oct 19 11:15:53 2015 +0100
----------------------------------------------------------------------
.../server/appmaster/SliderAppMaster.java | 35 ++++++--------------
.../apache/slider/test/SliderTestUtils.groovy | 10 +++---
2 files changed, 17 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/88a7b34c/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 92b602f..777fa04 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
@@ -574,11 +574,10 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
String action = serviceArgs.getAction();
List<String> actionArgs = serviceArgs.getActionArgs();
int exitCode;
-/* JDK7
- switch (action) {
+ switch (action) {
case SliderActions.ACTION_HELP:
- log.info(getName() + serviceArgs.usage());
- exitCode = LauncherExitCodes.EXIT_USAGE;
+ log.info("{}: {}", getName(), serviceArgs.usage());
+ exitCode = SliderExitCodes.EXIT_USAGE;
break;
case SliderActions.ACTION_CREATE:
exitCode = createAndRunCluster(actionArgs.get(0));
@@ -586,20 +585,10 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
default:
throw new SliderException("Unimplemented: " + action);
}
- */
- if (action.equals(SliderActions.ACTION_HELP)) {
- log.info("{}: {}", getName(), serviceArgs.usage());
- exitCode = SliderExitCodes.EXIT_USAGE;
- } else if (action.equals(SliderActions.ACTION_CREATE)) {
- exitCode = createAndRunCluster(actionArgs.get(0));
- } else {
- throw new SliderException("Unimplemented: " + action);
- }
log.info("Exiting AM; final exit code = {}", exitCode);
return exitCode;
}
-
/**
* Initialize a newly created service then add it.
* Because the service is not started, this MUST be done before
@@ -705,23 +694,22 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
Map<String, String> envVars;
List<Container> liveContainers;
-
- /**
+
+ /*
* It is critical this section is synchronized, to stop async AM events
* arriving while registering a restarting AM.
*/
synchronized (appState) {
int heartbeatInterval = HEARTBEAT_INTERVAL;
- //add the RM client -this brings the callbacks in
- asyncRMClient = AMRMClientAsync.createAMRMClientAsync(heartbeatInterval,
- this);
+ // add the RM client -this brings the callbacks in
+ asyncRMClient = AMRMClientAsync.createAMRMClientAsync(heartbeatInterval, this);
addService(asyncRMClient);
//now bring it up
deployChildService(asyncRMClient);
- //nmclient relays callbacks back to this class
+ // nmclient relays callbacks back to this class
nmClientAsync = new NMClientAsyncImpl("nmclient", this);
deployChildService(nmClientAsync);
@@ -756,8 +744,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
log.info(registryOperations.toString());
//build the role map
- List<ProviderRole> providerRoles =
- new ArrayList<ProviderRole>(providerService.getRoles());
+ List<ProviderRole> providerRoles = new ArrayList<>(providerService.getRoles());
providerRoles.addAll(SliderAMClientProvider.ROLES);
// Start up the WebApp and track the URL for it
@@ -1020,7 +1007,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
// up to date token for container launches (getContainerCredentials()).
UserGroupInformation currentUser = UserGroupInformation.getCurrentUser();
Credentials credentials = currentUser.getCredentials();
- List<Text> filteredTokens = new ArrayList<Text>();
+ List<Text> filteredTokens = new ArrayList<>();
filteredTokens.add(AMRMTokenIdentifier.KIND_NAME);
boolean keytabProvided = securityConfiguration.isKeytabProvided();
@@ -1942,7 +1929,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
protected synchronized void launchProviderService(AggregateConf instanceDefinition,
File confDir)
throws IOException, SliderException {
- Map<String, String> env = new HashMap<String, String>();
+ Map<String, String> env = new HashMap<>();
boolean execStarted = providerService.exec(instanceDefinition, confDir, env,
this);
if (execStarted) {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/88a7b34c/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
----------------------------------------------------------------------
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 5de6aba..ae07187 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
@@ -683,14 +683,18 @@ class SliderTestUtils extends Assert {
* to have been called.
*
* @param path path to page
- * @param connectionChecks optional closure to run against an open connection
* @return body of response
*/
- public static String getWebPage(String path, Closure connectionChecks = null) {
+ public static String getWebPage(String path) {
HttpOperationResponse outcome = executeGet(path)
return new String(outcome.data);
}
+ /**
+ * Execute a GET operation
+ * @param path path to GET
+ * @return the response
+ */
public static HttpOperationResponse executeGet(String path) {
assert path
assertHttpSupportInitialized()
@@ -1477,6 +1481,4 @@ class SliderTestUtils extends Assert {
}
}
-
-
}
[13/14] incubator-slider git commit: SLIDER-82 disable nodes updated
check in TestRESTStandalone;
allows for feature branch to be resynced into develop/
Posted by st...@apache.org.
SLIDER-82 disable nodes updated check in TestRESTStandalone; allows for feature branch to be resynced into develop/
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/002a88a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/002a88a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/002a88a0
Branch: refs/heads/develop
Commit: 002a88a05a469ac547c79095a81991a47661ac89
Parents: 65617d5
Author: Steve Loughran <st...@apache.org>
Authored: Sun Nov 1 11:47:09 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Sun Nov 1 11:47:09 2015 +0000
----------------------------------------------------------------------
.../slider/server/appmaster/state/RoleHistory.java | 1 -
.../apache/slider/agent/rest/JerseyTestDelegates.groovy | 11 ++---------
.../apache/slider/agent/rest/TestStandaloneREST.groovy | 5 +++--
3 files changed, 5 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/002a88a0/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
index c22d517..df3983a 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
@@ -964,7 +964,6 @@ public class RoleHistory {
return outstandingRequests.listPlacedRequests();
}
-
/**
* Get a snapshot of the outstanding placed request list
* @return a list of the requests outstanding at the time of requesting
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/002a88a0/slider-core/src/test/groovy/org/apache/slider/agent/rest/JerseyTestDelegates.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/JerseyTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/JerseyTestDelegates.groovy
index 857d15c..ff01dc5 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/JerseyTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/JerseyTestDelegates.groovy
@@ -177,7 +177,6 @@ class JerseyTestDelegates extends AbstractRestTestDelegate {
public void testCodahaleOperations() throws Throwable {
describe "Codahale operations"
-
jerseyGet("/")
jerseyGet(SYSTEM_THREADS)
jerseyGet(SYSTEM_HEALTHCHECK)
@@ -288,14 +287,9 @@ class JerseyTestDelegates extends AbstractRestTestDelegate {
// two components
assert components.size() >= 1
log.info "${components}"
-
- ComponentInformation amComponentInfo =
- (ComponentInformation) components[COMPONENT_AM]
-
ComponentInformation amFullInfo = jFetchType(
LIVE_COMPONENTS + "/${COMPONENT_AM}",
- ComponentInformation
- )
+ ComponentInformation)
assert amFullInfo.containers.size() == 1
assert amFullInfo.containers[0] == amContainerId
@@ -352,8 +346,7 @@ class JerseyTestDelegates extends AbstractRestTestDelegate {
def unresolvedAppConf = unresolvedConf.appConfOperations
def sam = "slider-appmaster"
- assert unresolvedAppConf.getComponentOpt(sam,
- TEST_GLOBAL_OPTION, "") == ""
+ assert unresolvedAppConf.getComponentOpt(sam, TEST_GLOBAL_OPTION, "") == ""
def resolvedConf = jFetchType(MODEL_RESOLVED, AggregateConf)
// log.info "Resolved \n$resolvedConf"
assert resolvedConf.appConfOperations.getComponentOpt(
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/002a88a0/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
index 9808688..97b3009 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
@@ -87,11 +87,13 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
log.info GET(proxyAM, SYSTEM_METRICS_JSON)
// using the metrics, await the first node status update
+ /* SLIDER--82: disabled
awaitGaugeValue(
appendToURL(proxyAM, SYSTEM_METRICS_JSON),
"org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag",
1,
WEB_STARTUP_TIME * 2, 500)
+ */
// Is the back door required? If so, don't test complex verbs via the proxy
def proxyComplexVerbs = !SliderXmlConfKeys.X_DEV_INSECURE_REQUIRED
@@ -103,8 +105,7 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
SliderXmlConfKeys.X_DEV_INSECURE_DEFAULT)
describe "Direct response headers from AM Web resources"
- def liveResUrl = appendToURL(directAM,
- SLIDER_PATH_APPLICATION, LIVE_RESOURCES);
+ def liveResUrl = appendToURL(directAM, SLIDER_PATH_APPLICATION, LIVE_RESOURCES);
HttpOperationResponse response = executeGet(liveResUrl)
response.headers.each { key, val -> log.info("$key $val") }
log.info "Content type: ${response.contentType}"
[09/14] incubator-slider git commit: SLIDER-947 still trying to get
node update events from YARN RM
Posted by st...@apache.org.
SLIDER-947 still trying to get node update events from YARN RM
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/e2d8ab0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/e2d8ab0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/e2d8ab0d
Branch: refs/heads/develop
Commit: e2d8ab0daab639bae1421270bbd9ae2e7ec5810e
Parents: 3aeab9c
Author: Steve Loughran <st...@apache.org>
Authored: Sun Oct 18 19:22:09 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Sun Oct 18 19:22:09 2015 +0100
----------------------------------------------------------------------
.../server/appmaster/management/BoolMetric.java | 3 +-
.../agent/rest/LowLevelRestTestDelegates.groovy | 15 ++---
.../slider/agent/rest/TestStandaloneREST.groovy | 19 +++---
.../apache/slider/test/SliderTestUtils.groovy | 64 +++++++++++++++++++-
.../funtest/lifecycle/AgentRegistryIT.groovy | 2 +-
5 files changed, 75 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
index 23ea61d..33f8d85 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/BoolMetric.java
@@ -18,7 +18,6 @@
package org.apache.slider.server.appmaster.management;
-import com.codahale.metrics.Counting;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Metric;
@@ -55,7 +54,7 @@ public class BoolMetric implements Metric, Gauge<Integer> {
* @return true if the input parses to an integer other than 0. False if it doesn't parse
* or parses to 0.
*/
- public boolean fromString(String s) {
+ public static boolean fromString(String s) {
try {
return Integer.valueOf(s) != 0;
} catch (NumberFormatException e) {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
index 3d87c28..ed10479 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/LowLevelRestTestDelegates.groovy
@@ -71,8 +71,8 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
public void logCodahaleMetrics() {
// query Coda Hale metrics
- log.info getWebPage(appmaster, SYSTEM_HEALTHCHECK)
- log.info getWebPage(appmaster, SYSTEM_METRICS)
+ log.info prettyPrintJson(getWebPage(appmaster, SYSTEM_HEALTHCHECK))
+ log.info prettyPrintJson(getWebPage(appmaster, SYSTEM_METRICS))
}
@@ -150,9 +150,6 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
assert components.size() >= 1
log.info "${components}"
- ComponentInformation amComponentInfo =
- (ComponentInformation) components[COMPONENT_AM]
-
ComponentInformation amFullInfo = fetchType(
ComponentInformation,
appmaster,
@@ -278,7 +275,6 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
MediaType.TEXT_PLAIN)
log.info "Stopped: $outcome"
-
// now a ping is expected to fail
String ping = appendToURL(appmaster, SLIDER_PATH_APPLICATION, ACTION_PING)
@@ -317,7 +313,6 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
@Override
public void testSuiteGetOperations() {
-
testCodahaleOperations()
testMimeTypes()
testLiveResources()
@@ -369,10 +364,8 @@ class LowLevelRestTestDelegates extends AbstractRestTestDelegate {
* @return the outcome
*/
Outcome probeForResolveConfValues(Map args) {
- assert args["key"]
- assert args["val"]
- String key = args["key"]
- String val = args["val"]
+ String key = requiredMapValue(args, "key")
+ String val = requiredMapValue(args, "val")
ConfTreeOperations resolved = modelDesiredResolvedResources
return Outcome.fromBool(resolved.get(key) == val)
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
index 880d9ca..9808688 100644
--- a/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/agent/rest/TestStandaloneREST.groovy
@@ -75,8 +75,8 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
}
execOperation(WEB_STARTUP_TIME) {
- def metrics = GET(directAM, SYSTEM_METRICS)
- log.info metrics
+ def metrics = GET(directAM, SYSTEM_METRICS_JSON)
+ log.info prettyPrintJson(metrics)
}
GET(proxyAM)
@@ -87,15 +87,12 @@ class TestStandaloneREST extends AgentMiniClusterTestBase {
log.info GET(proxyAM, SYSTEM_METRICS_JSON)
// using the metrics, await the first node status update
- execOperation(WEB_STARTUP_TIME) {
- def metrics = getMetrics(proxyAM)
- if (!getGaugeAsBool(metrics,
- "org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag", false)) {
- throw new IOException("Nodes not updated in $metrics")
- } else {
- "true"
- };
- }
+ awaitGaugeValue(
+ appendToURL(proxyAM, SYSTEM_METRICS_JSON),
+ "org.apache.slider.server.appmaster.state.RoleHistory.nodes-updated.flag",
+ 1,
+ WEB_STARTUP_TIME * 2, 500)
+
// Is the back door required? If so, don't test complex verbs via the proxy
def proxyComplexVerbs = !SliderXmlConfKeys.X_DEV_INSECURE_REQUIRED
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy
----------------------------------------------------------------------
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 c5808f2..5de6aba 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
@@ -100,7 +100,12 @@ class SliderTestUtils extends Assert {
log.info("");
}
- public static String prettyPrint(String json) {
+ /**
+ * Convert a JSON string to something readable
+ * @param json
+ * @return a string for printing
+ */
+ public static String prettyPrintJson(String json) {
JsonOutput.prettyPrint(json)
}
@@ -370,7 +375,7 @@ class SliderTestUtils extends Assert {
if (timedOut) {
duration.finish();
describe("$operation: role count not met after $duration: $details")
- log.info(prettyPrint(status.toJsonString()))
+ log.info(prettyPrintJson(status.toJsonString()))
fail("$operation: role counts not met after $duration: " +
details.toString() +
" in \n$status ")
@@ -416,7 +421,7 @@ class SliderTestUtils extends Assert {
String text,
ClusterDescription status) {
describe(text)
- log.info(prettyPrint(status.toJsonString()))
+ log.info(prettyPrintJson(status.toJsonString()))
}
@@ -1316,6 +1321,17 @@ class SliderTestUtils extends Assert {
}
/**
+ * Get a value from a map; raise an assertion if it is not there
+ * @param map map to look up
+ * @param key key
+ * @return the string value
+ */
+ String requiredMapValue(Map map, String key) {
+ assert map[key] != null
+ map[key].toString()
+ }
+
+ /**
* Get a web page and deserialize the supplied JSON into
* an instance of the specific class.
* @param clazz class to deserialize to
@@ -1420,5 +1436,47 @@ class SliderTestUtils extends Assert {
return metrics;
}
+ /**
+ * Await a specific gauge being of the desired value
+ * @param target target URL
+ * @param gauge gauge name
+ * @param desiredValue desired value
+ * @param timeout timeout in millis
+ * @param sleepDur sleep in millis
+ */
+ public void awaitGaugeValue(String target, String gauge, int desiredValue,
+ int timeout,
+ int sleepDur) {
+ def text = "Probe $target for gauge $gauge == $desiredValue"
+ repeatUntilSuccess(text,
+ this.&probeMetricGaugeValue,
+ timeout, sleepDur,
+ [
+ url : target,
+ gauge: gauge,
+ desiredValue: desiredValue.toString()
+ ],
+ true, text) {
+ log.error(prettyPrintJson(GET(target)))
+ }
+ }
+
+ Outcome probeMetricGaugeValue(Map args) {
+ String url = requiredMapValue(args, "url")
+ String gauge = requiredMapValue(args, "gauge")
+ String vstr = requiredMapValue(args, "desiredValue")
+ assert vstr != null, "null desired value in $args"
+ assert vstr != "", "empty desired value in $args"
+ int desiredValue = Integer.decode(vstr)
+ try {
+ def metrics = parseMetrics(GET(url))
+ def gaugeValue = getGaugeValue(metrics, gauge, -1)
+ return gaugeValue == desiredValue ? Outcome.Success : Outcome.Retry
+ } catch (IOException e) {
+ return Outcome.Fail
+ }
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e2d8ab0d/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
----------------------------------------------------------------------
diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
index 4f9701c..ff5e57e 100644
--- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
+++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AgentRegistryIT.groovy
@@ -160,7 +160,7 @@ public class AgentRegistryIT extends AgentCommandTestBase
Outcome probeForEntryMissing(Map args) {
- String path = args["path"]
+ String path = requiredMapValue(args, "path")
def shell = slider([ACTION_RESOLVE, ARG_PATH, path])
return Outcome.fromBool(shell.ret == EXIT_NOT_FOUND)
}
[02/14] incubator-slider git commit: SLIDER-82 SLIDER-947 build node
map from yarn update reports; serve via REST/IPC
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
index c408ed2..7425c2d 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
@@ -82,7 +82,8 @@ public class RestTypeMarshalling {
if (wire.hasFailureMessage()) {
info.failureMessage = wire.getFailureMessage();
}
-
+ info.pendingAntiAffineRequestCount = wire.getPendingAntiAffineRequestCount();
+ info.pendingAntiAffineRequest = info.pendingAntiAffineRequestCount > 0;
return info;
}
@@ -132,11 +133,11 @@ public class RestTypeMarshalling {
if (info.containers != null) {
builder.addAllContainers(info.containers);
}
+ builder.setPendingAntiAffineRequestCount(info.pendingAntiAffineRequestCount);
return builder.build();
}
- public static ContainerInformation
- unmarshall(Messages.ContainerInformationProto wire) {
+ public static ContainerInformation unmarshall(Messages.ContainerInformationProto wire) {
ContainerInformation info = new ContainerInformation();
info.containerId = wire.getContainerId();
info.component = wire.getComponent();
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
index 52f6c08..3b4b8bd 100644
--- a/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
+++ b/slider-core/src/main/java/org/apache/slider/api/types/ComponentInformation.java
@@ -19,6 +19,7 @@
package org.apache.slider.api.types;
import org.apache.slider.api.StatusKeys;
+import org.apache.slider.server.appmaster.state.RoleStatus;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -35,13 +36,15 @@ import java.util.Map;
* <p>
* This means that if any fields are added here. they must be added to
* <code>src/main/proto/SliderClusterMessages.proto</code> and
- * the probuf structures rebuilt.
+ * the protobuf structures rebuilt via a {@code mvn generate-sources -Pcompile-protobuf}
+ *
+ * See also {@link RoleStatus#serialize()}
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class ComponentInformation {
-
+
public String name;
public int priority;
public int desired, actual, releasing;
@@ -49,6 +52,9 @@ public class ComponentInformation {
public int requested;
public int failed, started, startFailed, completed, totalRequested;
public int nodeFailed, failedRecently, preempted;
+ public boolean pendingAntiAffineRequest;
+ public int pendingAntiAffineRequestCount;
+
public String failureMessage;
public List<String> containers;
@@ -59,16 +65,17 @@ public class ComponentInformation {
public Map<String, Integer> buildStatistics() {
Map<String, Integer> stats = new HashMap<>();
stats.put(StatusKeys.STATISTICS_CONTAINERS_ACTIVE_REQUESTS, requested);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_ANTI_AFFINE_PENDING, pendingAntiAffineRequestCount);
stats.put(StatusKeys.STATISTICS_CONTAINERS_COMPLETED, completed);
stats.put(StatusKeys.STATISTICS_CONTAINERS_DESIRED, desired);
stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED, failed);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_NODE, nodeFailed);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_RECENTLY, failedRecently);
stats.put(StatusKeys.STATISTICS_CONTAINERS_LIVE, actual);
+ stats.put(StatusKeys.STATISTICS_CONTAINERS_PREEMPTED, preempted);
stats.put(StatusKeys.STATISTICS_CONTAINERS_REQUESTED, totalRequested);
stats.put(StatusKeys.STATISTICS_CONTAINERS_STARTED, started);
stats.put(StatusKeys.STATISTICS_CONTAINERS_START_FAILED, startFailed);
- stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_RECENTLY, failedRecently);
- stats.put(StatusKeys.STATISTICS_CONTAINERS_FAILED_NODE, nodeFailed);
- stats.put(StatusKeys.STATISTICS_CONTAINERS_PREEMPTED, preempted);
return stats;
}
@@ -76,22 +83,23 @@ public class ComponentInformation {
public String toString() {
final StringBuilder sb =
new StringBuilder("ComponentInformation{");
- sb.append("failureMessage='").append(failureMessage).append('\'');
- sb.append(", totalRequested=").append(totalRequested);
+ sb.append(", name='").append(name).append('\'');
+ sb.append(", actual=").append(actual);
+ sb.append(", anti-affine pending").append(pendingAntiAffineRequestCount);
sb.append(", completed=").append(completed);
- sb.append(", startFailed=").append(startFailed);
- sb.append(", started=").append(started);
+ sb.append(", desired=").append(desired);
sb.append(", failed=").append(failed);
- sb.append(", requested=").append(requested);
+ sb.append(", failureMessage='").append(failureMessage).append('\'');
sb.append(", placementPolicy=").append(placementPolicy);
- sb.append(", releasing=").append(releasing);
- sb.append(", actual=").append(actual);
- sb.append(", desired=").append(desired);
sb.append(", priority=").append(priority);
- sb.append(", name='").append(name).append('\'');
- sb.append(", container count='")
- .append(containers== null ? 0: containers.size())
- .append('\'');
+ sb.append(", releasing=").append(releasing);
+ sb.append(", requested=").append(requested);
+ sb.append(", started=").append(started);
+ sb.append(", startFailed=").append(startFailed);
+ sb.append(", totalRequested=").append(totalRequested);
+ sb.append("container count='")
+ .append(containers == null ? 0 : containers.size())
+ .append('\'');
sb.append('}');
return sb.toString();
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
new file mode 100644
index 0000000..33a875e
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/api/types/NodeEntryInformation.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.api.types;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+/**
+ * Serialized node entry information. Must be kept in sync with the protobuf equivalent.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NodeEntryInformation {
+
+ public int priority;
+
+ /**
+ * instance explicitly requested on this node: it's OK if an allocation
+ * comes in that has not been (and when that happens, this count should
+ * not drop).
+ */
+ public int requested;
+
+ /** number of starting instances */
+ public int starting;
+
+ /** incrementing counter of instances that failed to start */
+ public int startFailed;
+
+ /** incrementing counter of instances that failed */
+ public int failed;
+
+ /**
+ * Counter of "failed recently" events. These are all failures
+ * which have happened since it was last reset.
+ */
+ public int failedRecently;
+
+ /** incrementing counter of instances that have been pre-empted. */
+ public int preempted;
+
+ /**
+ * Number of live nodes.
+ */
+ public int live;
+
+ /** number of containers being released off this node */
+ public int releasing;
+
+ /** timestamp of last use */
+ public long lastUsed;
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java b/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
new file mode 100644
index 0000000..842db14
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/api/types/NodeInformation.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.api.types;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Serialized node information. Must be kept in sync with the protobuf equivalent.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NodeInformation {
+
+ public String hostname;
+ public String state;
+ public String httpAddress;
+ public String rackName;
+ public String labels;
+ public String healthReport;
+ public long lastUpdated;
+ public List<NodeEntryInformation> entries = new ArrayList<>();
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java
deleted file mode 100644
index 32684c6..0000000
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/AMUtils.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.server.appmaster;
-
-import org.apache.slider.common.SliderExitCodes;
-import org.apache.slider.core.main.LauncherExitCodes;
-
-public class AMUtils {
- /**
- * Map an exit code from a process
- * @param exitCode
- * @return an exit code
- */
- public static int mapProcessExitCodeToYarnExitCode(int exitCode) {
- switch (exitCode) {
- case LauncherExitCodes.EXIT_SUCCESS:
- return LauncherExitCodes.EXIT_SUCCESS;
- //remap from a planned shutdown to a failure
- case LauncherExitCodes.EXIT_CLIENT_INITIATED_SHUTDOWN:
- return SliderExitCodes.EXIT_SUCCESS;
- default:
- return exitCode;
- }
- }
-
- public static boolean isMappedExitAFailure(int mappedExitCode) {
- return mappedExitCode != 0;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java
new file mode 100644
index 0000000..50b5dad
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufClusterServices.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster;
+
+import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.util.Records;
+import org.apache.slider.server.appmaster.state.AbstractClusterServices;
+
+public class ProtobufClusterServices extends AbstractClusterServices {
+
+ public Resource newResource() {
+ return Records.newRecord(Resource.class);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java
deleted file mode 100644
index d7f79f1..0000000
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/ProtobufRecordFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.server.appmaster;
-
-import org.apache.hadoop.yarn.api.records.Resource;
-import org.apache.hadoop.yarn.util.Records;
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory;
-
-public class ProtobufRecordFactory extends AbstractRecordFactory {
- public Resource newResource() {
- return Records.newRecord(Resource.class);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/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 019ec71..0e7e295 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
@@ -291,7 +291,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
* live on, etc.
*/
private final AppState appState =
- new AppState(new ProtobufRecordFactory(), metricsAndMonitoring);
+ new AppState(new ProtobufClusterServices(), metricsAndMonitoring);
/**
* App state for external objects. This is almost entirely
@@ -301,7 +301,6 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
private final ProviderAppState stateForProviders =
new ProviderAppState("undefined", appState);
-
/**
* model the state using locks and conditions
*/
@@ -1000,7 +999,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
.start(webApp);
WebAppService<SliderAMWebApp> webAppService =
- new WebAppService<SliderAMWebApp>("slider", webApp);
+ new WebAppService<>("slider", webApp);
deployChildService(webAppService);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
index 5b96256..8de27e7 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/MetricsAndMonitoring.java
@@ -24,7 +24,9 @@ import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.service.AbstractService;
import org.apache.hadoop.service.CompositeService;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -49,8 +51,14 @@ public class MetricsAndMonitoring extends CompositeService {
final HealthCheckRegistry health = new HealthCheckRegistry();
private final Map<String, MeterAndCounter> meterAndCounterMap
- = new ConcurrentHashMap<String, MeterAndCounter>();
-
+ = new ConcurrentHashMap<>();
+
+ /**
+ * List of recorded events
+ */
+ private final List<RecordedEvent> eventHistory = new ArrayList<>(100);
+
+ public static final int EVENT_LIMIT = 1000;
public MetricRegistry getMetrics() {
return metrics;
@@ -100,4 +108,23 @@ public class MetricsAndMonitoring extends CompositeService {
meter.mark();
}
+ /**
+ * Add an event (synchronized)
+ * @param event event
+ */
+ public synchronized void noteEvent(RecordedEvent event) {
+ if (eventHistory.size() > EVENT_LIMIT) {
+ eventHistory.remove(0);
+ }
+ eventHistory.add(event);
+ }
+
+ /**
+ * Clone the event history; blocks for the duration of the copy operation.
+ * @return a new list
+ */
+ public synchronized List<RecordedEvent> cloneEventHistory() {
+ return new ArrayList<>(eventHistory);
+ }
}
+
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java
new file mode 100644
index 0000000..d48d337
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/management/RecordedEvent.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.management;
+
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import java.text.DateFormat;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class RecordedEvent {
+ private static final DateFormat dateFormat = DateFormat.getDateInstance();
+ public long id;
+ public String name;
+ public long timestamp;
+ public String time;
+ public String category;
+ public String host;
+ public int role;
+ public String text;
+
+ public RecordedEvent() {
+ }
+
+ /**
+ * Create an event. The timestamp is also converted to a time string
+ * @param id id counter
+ * @param name event name
+ * @param timestamp timestamp. If non-zero, is used to build the {@code time} text field.
+ * @param category even category
+ * @param text arbitrary text
+ */
+ public RecordedEvent(long id, String name, long timestamp, String category, String text) {
+ this.id = id;
+ this.name = name;
+ this.timestamp = timestamp;
+ this.time = timestamp > 0 ? dateFormat.format(timestamp) : "";
+ this.category = category;
+ this.text = text;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
index 594ee47..b7794ed 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/operations/RMOperationHandlerActions.java
@@ -25,6 +25,11 @@ import org.apache.hadoop.yarn.client.api.AMRMClient;
import java.util.List;
public interface RMOperationHandlerActions {
+
+ /**
+ * Release an assigned container
+ * @param containerId container
+ */
void releaseAssignedContainer(ContainerId containerId);
/**
@@ -38,7 +43,7 @@ public interface RMOperationHandlerActions {
* @param request request to cancel
*/
void cancelSingleRequest(AMRMClient.ContainerRequest request);
-
+
/**
* Remove a container request
* @param priority1 priority to remove at
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java
new file mode 100644
index 0000000..27e25f9
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractClusterServices.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.state;
+
+import org.apache.hadoop.yarn.api.records.Resource;
+
+/**
+ * Cluster services offered by the YARN infrastructure.
+ */
+public abstract class AbstractClusterServices {
+ /**
+ * Create a resource for requests
+ * @return a resource which can be built up.
+ */
+ public abstract Resource newResource();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
deleted file mode 100644
index e9655f0..0000000
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AbstractRecordFactory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.server.appmaster.state;
-
-import org.apache.hadoop.yarn.api.records.Resource;
-
-/**
- * Factory supplying records created by the App state; entry point
- * for mock code.
- */
-public abstract class AbstractRecordFactory {
-
- public abstract Resource newResource();
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
index 6990a24..0f77824 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java
@@ -115,7 +115,7 @@ public class AppState {
protected static final Logger log =
LoggerFactory.getLogger(AppState.class);
- private final AbstractRecordFactory recordFactory;
+ private final AbstractClusterServices recordFactory;
private final MetricsAndMonitoring metricsAndMonitoring;
@@ -179,13 +179,13 @@ public class AppState {
private ClusterDescription clusterStatusTemplate = new ClusterDescription();
private final Map<Integer, RoleStatus> roleStatusMap =
- new ConcurrentHashMap<Integer, RoleStatus>();
+ new ConcurrentHashMap<>();
private final Map<String, ProviderRole> roles =
- new ConcurrentHashMap<String, ProviderRole>();
+ new ConcurrentHashMap<>();
private final Map<Integer, ProviderRole> rolePriorityMap =
- new ConcurrentHashMap<Integer, ProviderRole>();
+ new ConcurrentHashMap<>();
/**
* The master node.
@@ -265,7 +265,7 @@ public class AppState {
* Nodes that came assigned to a role above that
* which were asked for -this appears to happen
*/
- private final Set<ContainerId> surplusNodes = new HashSet<ContainerId>();
+ private final Set<ContainerId> surplusNodes = new HashSet<>();
/**
* Map of containerID to cluster nodes, for status reports.
@@ -308,7 +308,7 @@ public class AppState {
* @param recordFactory factory for YARN records
* @param metricsAndMonitoring metrics and monitoring services
*/
- public AppState(AbstractRecordFactory recordFactory,
+ public AppState(AbstractClusterServices recordFactory,
MetricsAndMonitoring metricsAndMonitoring) {
this.recordFactory = recordFactory;
this.metricsAndMonitoring = metricsAndMonitoring;
@@ -1439,6 +1439,10 @@ public class AppState {
}
}
+ /**
+ * Handle node update from the RM. This syncs up the node map with the RM's view
+ * @param updatedNodes updated nodes
+ */
public synchronized void onNodesUpdated(List<NodeReport> updatedNodes) {
roleHistory.onNodesUpdated(updatedNodes);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
index 0f46054..8ff0895 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeEntry.java
@@ -18,23 +18,24 @@
package org.apache.slider.server.appmaster.state;
+import org.apache.slider.api.types.NodeEntryInformation;
+
/**
* Information about the state of a role on a specific node instance.
* No fields are synchronized; sync on the instance to work with it
- <p>
- The two fields `releasing` and `requested` are used to track the ongoing
- state of YARN requests; they do not need to be persisted across stop/start
- cycles. They may be relevant across AM restart, but without other data
- structures in the AM, not enough to track what the AM was up to before
- it was restarted. The strategy will be to ignore unexpected allocation
- responses (which may come from pre-restart) requests, while treating
- unexpected container release responses as failures.
- <p>
- The `active` counter is only decremented after a container release response
- has been received.
- <p>
-
- Accesses are synchronized.
+ * <p>
+ * The two fields `releasing` and `requested` are used to track the ongoing
+ * state of YARN requests; they do not need to be persisted across stop/start
+ * cycles. They may be relevant across AM restart, but without other data
+ * structures in the AM, not enough to track what the AM was up to before
+ * it was restarted. The strategy will be to ignore unexpected allocation
+ * responses (which may come from pre-restart) requests, while treating
+ * unexpected container release responses as failures.
+ * <p>
+ * The `active` counter is only decremented after a container release response
+ * has been received.
+ * <p>
+ *
*/
public class NodeEntry {
@@ -47,30 +48,45 @@ public class NodeEntry {
/**
* instance explicitly requested on this node: it's OK if an allocation
* comes in that has not been (and when that happens, this count should
- * not drop)
+ * not drop).
*/
private int requested;
+
+ /** number of starting instances */
private int starting;
+
+ /** incrementing counter of instances that failed to start */
private int startFailed;
+
+ /** incrementing counter of instances that failed */
private int failed;
- private int preempted;
+
/**
* Counter of "failed recently" events. These are all failures
* which have happened since it was last reset.
*/
private int failedRecently;
+
+ /** incrementing counter of instances that have been pre-empted. */
+ private int preempted;
+
/**
* Number of live nodes.
*/
private int live;
+
+ /** number of containers being released off this node */
private int releasing;
+
+ /** timestamp of last use */
private long lastUsed;
-
+
/**
- * Is the node available for assignments. This does not track
- * whether or not there are any outstanding requests for this node
- * @return true if there are no role instances here
- * other than some being released.
+ * Is the node available for assignments? That is, it is
+ * not running any instances of this type, nor are there
+ * any requests oustanding for it.
+ * @return true if a new request could be issued without taking
+ * the number of instances > 1.
*/
public synchronized boolean isAvailable() {
return getActive() == 0 && (requested == 0) && starting == 0;
@@ -266,4 +282,23 @@ public class NodeEntry {
sb.append('}');
return sb.toString();
}
+
+ /**
+ * Produced a serialized form which can be served up as JSON
+ * @return a summary of the current role status.
+ */
+ public synchronized NodeEntryInformation serialize() {
+ NodeEntryInformation info = new NodeEntryInformation();
+ info.priority = rolePriority;
+ info.requested = requested;
+ info.releasing = releasing;
+ info.starting = starting;
+ info.startFailed = startFailed;
+ info.failed = failed;
+ info.failedRecently = failedRecently;
+ info.preempted = preempted;
+ info.live = live;
+ info.lastUsed = lastUsed;
+ return info;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
index fb80b5f..2afdc42 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeInstance.java
@@ -18,6 +18,12 @@
package org.apache.slider.server.appmaster.state;
+import org.apache.hadoop.yarn.api.records.NodeReport;
+import org.apache.hadoop.yarn.api.records.NodeState;
+import org.apache.slider.api.types.NodeEntryInformation;
+import org.apache.slider.api.types.NodeInformation;
+import org.apache.slider.common.tools.SliderUtils;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
@@ -33,6 +39,19 @@ public class NodeInstance {
public final String hostname;
+ /**
+ * last state of node. Starts off as {@link NodeState#RUNNING},
+ * on the assumption that it is live.
+ */
+ private NodeState nodeState = NodeState.RUNNING;
+
+ private NodeReport nodeReport = null;
+
+ /**
+ * time of state update
+ */
+ private long nodeStateUpdateTime = 0;
+
private final List<NodeEntry> nodeEntries;
/**
@@ -44,6 +63,20 @@ public class NodeInstance {
nodeEntries = new ArrayList<>(roles);
}
+
+ /**
+ * Update the node status
+ * @param report latest node report
+ * @return true if the node state changed
+ */
+ public boolean updateNode(NodeReport report) {
+ nodeReport = report;
+ NodeState oldState = nodeState;
+ nodeState = report.getNodeState();
+ nodeStateUpdateTime = report.getLastHealthReportTime();
+ return nodeState != oldState;
+ }
+
/**
* Get the entry for a role -if present
* @param role role index
@@ -215,11 +248,35 @@ public class NodeInstance {
}
/**
+ * Produced a serialized form which can be served up as JSON
+ * @return a summary of the current role status.
+ */
+ public synchronized NodeInformation serialize() {
+ NodeInformation info = new NodeInformation();
+ info.hostname = hostname;
+ // null-handling state constructor
+ info.state = "" + nodeState;
+ info.lastUpdated = nodeStateUpdateTime;
+ if (nodeReport != null) {
+ info.httpAddress = nodeReport.getHttpAddress();
+ info.rackName = nodeReport.getRackName();
+ info.labels = SliderUtils.join(nodeReport.getNodeLabels(), ", ", false);
+ info.healthReport = nodeReport.getHealthReport();
+ }
+ info.entries = new ArrayList<>(nodeEntries.size());
+ for (NodeEntry nodeEntry : nodeEntries) {
+ info.entries.add(nodeEntry.serialize());
+ }
+ return info;
+ }
+
+ /**
* A comparator for sorting entries where the node is preferred over another.
* <p>
* The exact algorithm may change
*
- * @return +ve int if left is preferred to right; -ve if right over left, 0 for equal
+ * the comparision is a positive int if left is preferred to right;
+ * negative if right over left, 0 for equal
*/
public static class Preferred implements Comparator<NodeInstance>,
Serializable {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
index aa50baa..b631057 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/NodeMap.java
@@ -19,6 +19,7 @@
package org.apache.slider.server.appmaster.state;
import com.google.common.annotations.VisibleForTesting;
+import org.apache.hadoop.yarn.api.records.NodeReport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,9 +27,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.ListIterator;
import java.util.Map;
/**
@@ -84,27 +83,6 @@ public class NodeMap extends HashMap<String, NodeInstance> {
}
/**
- * purge the history of all nodes that have been inactive since the absolute time
- * @param absoluteTime time
- * @return the number purged
- */
- public int purgeUnusedEntries(long absoluteTime) {
- int purged = 0;
- Iterator<Map.Entry<String, NodeInstance>> iterator =
- entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, NodeInstance> entry = iterator.next();
- NodeInstance ni = entry.getValue();
- if (!ni.purgeUnusedEntries(absoluteTime)) {
- iterator.remove();
- purged ++;
- }
- }
- return purged;
- }
-
-
- /**
* reset the failed recently counters
*/
public void resetFailedRecently() {
@@ -114,6 +92,17 @@ public class NodeMap extends HashMap<String, NodeInstance> {
}
}
+
+ /**
+ * Update the node state
+ * @param hostname host name
+ * @param report latest node report
+ * @return the updated node.
+ */
+ public boolean updateNode(String hostname, NodeReport report) {
+ return getOrCreate(hostname).updateNode(report);
+ }
+
/**
* Clone point
* @return
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
index 78fdcc9..f1e26bb 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleHistory.java
@@ -23,6 +23,7 @@ import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.NodeReport;
+import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.client.api.AMRMClient;
import org.apache.slider.common.tools.SliderUtils;
@@ -66,14 +67,11 @@ public class RoleHistory {
LoggerFactory.getLogger(RoleHistory.class);
private final List<ProviderRole> providerRoles;
private long startTime;
- /**
- * Time when saved
- */
+
+ /** Time when saved */
private long saveTime;
- /**
- * If the history was loaded, the time at which the history was saved
- *
- */
+
+ /** If the history was loaded, the time at which the history was saved */
private long thawedDataTime;
private NodeMap nodemap;
@@ -331,18 +329,6 @@ public class RoleHistory {
}
/**
- * Garbage collect the structure -this will drop
- * all nodes that have been inactive since the (relative) age.
- * This will drop the failure counts of the nodes too, so it will
- * lose information that matters.
- * @param age relative age
- */
- public void gc(long age) {
- long absoluteTime = now() - age;
- purgeUnusedEntries(absoluteTime);
- }
-
- /**
* Mark ourselves as dirty
*/
public void touch() {
@@ -355,15 +341,6 @@ public class RoleHistory {
}
/**
- * purge the history of
- * all nodes that have been inactive since the absolute time
- * @param absoluteTime time
- */
- public synchronized void purgeUnusedEntries(long absoluteTime) {
- nodemap.purgeUnusedEntries(absoluteTime);
- }
-
- /**
* reset the failed recently counters
*/
public synchronized void resetFailedRecently() {
@@ -451,7 +428,7 @@ public class RoleHistory {
if (loadedRoleHistory != null) {
rebuild(loadedRoleHistory);
thawSuccessful = true;
- Path loadPath = loadedRoleHistory.getPath();;
+ Path loadPath = loadedRoleHistory.getPath();
log.debug("loaded history from {}", loadPath);
// delete any old entries
try {
@@ -627,8 +604,8 @@ public class RoleHistory {
}
/**
- * Get the list of active nodes ... walks the node map so
- * is O(nodes)
+ * Get the list of active nodes ... walks the node map so
+ * is {@code O(nodes)}
* @param role role index
* @return a possibly empty list of nodes with an instance of that node
*/
@@ -654,8 +631,7 @@ public class RoleHistory {
* @throws RuntimeException if the container has no hostname
*/
public synchronized NodeInstance getOrCreateNodeInstance(Container container) {
- String hostname = RoleHistoryUtils.hostnameOf(container);
- return nodemap.getOrCreate(hostname);
+ return nodemap.getOrCreate(RoleHistoryUtils.hostnameOf(container));
}
/**
@@ -738,7 +714,7 @@ public class RoleHistory {
}
/**
- * Event: a container start has been submitter
+ * Event: a container start has been submitted
* @param container container being started
* @param instance instance bound to the container
*/
@@ -775,19 +751,25 @@ public class RoleHistory {
* @param updatedNodes list of updated nodes
*/
public synchronized void onNodesUpdated(List<NodeReport> updatedNodes) {
+ log.debug("Updating {} nodes", updatedNodes.size());
for (NodeReport updatedNode : updatedNodes) {
- String hostname = updatedNode.getNodeId() == null
+ String hostname = updatedNode.getNodeId() == null
? null
: updatedNode.getNodeId().getHost();
- if (hostname == null) {
+ NodeState nodeState = updatedNode.getNodeState();
+ if (hostname == null || nodeState == null) {
continue;
}
- if (updatedNode.getNodeState() != null
- && updatedNode.getNodeState().isUnusable()) {
- failedNodes.add(hostname);
- nodemap.remove(hostname);
- } else {
- failedNodes.remove(hostname);
+ // update the node; this also creates an instance if needed
+ boolean updated = nodemap.updateNode(hostname, updatedNode);
+ if (updated) {
+ log.debug("Updated host {} to state {}", hostname, nodeState);
+ if (nodeState.isUnusable()) {
+ log.info("Failed node {}", hostname);
+ failedNodes.add(hostname);
+ } else {
+ failedNodes.remove(hostname);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
index e2974fc..98a8311 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/RoleStatus.java
@@ -25,6 +25,7 @@ import org.apache.slider.providers.ProviderRole;
import java.io.Serializable;
import java.util.Comparator;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
@@ -51,6 +52,15 @@ public final class RoleStatus implements Cloneable {
private final AtomicLong failedRecently = new AtomicLong(0);
private final AtomicLong limitsExceeded = new AtomicLong(0);
+ /** flag set to true if there is an outstanding anti-affine request */
+ private final AtomicBoolean pendingAARequest = new AtomicBoolean(false);
+
+ /**
+ * Number of AA requests queued. These should be reduced first on a
+ * flex down.
+ */
+ private int pendingAntiAffineRequestCount = 0;
+
private String failureMessage = "";
public RoleStatus(ProviderRole providerRole) {
@@ -302,6 +312,7 @@ public final class RoleStatus implements Cloneable {
", actual=" + actual +
", requested=" + requested +
", releasing=" + releasing +
+ ", pendingAntiAffineRequestCount=" + pendingAntiAffineRequestCount +
", failed=" + failed +
", failed recently=" + failedRecently.get() +
", node failed=" + nodeFailed.get() +
@@ -355,6 +366,8 @@ public final class RoleStatus implements Cloneable {
info.failedRecently = failedRecently.intValue();
info.nodeFailed = nodeFailed.intValue();
info.preempted = preempted.intValue();
+ info.pendingAntiAffineRequest = pendingAARequest.get();
+ info.pendingAntiAffineRequestCount = pendingAntiAffineRequestCount;
return info;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
index eef178a..56c7cac 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/state/StateAccessForProviders.java
@@ -37,7 +37,8 @@ import java.util.List;
import java.util.Map;
/**
- * The methods to offer state access to the providers
+ * The methods to offer state access to the providers and other parts of
+ * the system which want read-only access to the state.
*/
public interface StateAccessForProviders {
@@ -280,5 +281,10 @@ public interface StateAccessForProviders {
*/
List<RoleInstance> lookupRoleContainers(String component);
+ /**
+ * Get the JSON serializable information about a component
+ * @param component component to look up
+ * @return a structure describing the component.
+ */
ComponentInformation getComponentInformation(String component);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
index 179ae8c..0f99d6d 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/WebAppApi.java
@@ -81,7 +81,15 @@ public interface WebAppApi {
*/
QueueAccess getQueues();
+ /**
+ * API for AM operations
+ * @return current operations implementation
+ */
AppMasterActionOperations getAMOperations();
+ /**
+ * Local cache of content
+ * @return the cache
+ */
ContentCache getContentCache();
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/main/proto/SliderClusterMessages.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterMessages.proto b/slider-core/src/main/proto/SliderClusterMessages.proto
index caca87b..8287f36 100644
--- a/slider-core/src/main/proto/SliderClusterMessages.proto
+++ b/slider-core/src/main/proto/SliderClusterMessages.proto
@@ -24,21 +24,28 @@ package org.apache.slider.api;
//import "Security.proto";
+/*
+ To debug compilation problems, bypass the maven build and invoke protoc
+ from the command line
+
+ protoc --java_out=target src/main/proto/SliderClusterMessages.proto
+*/
+
message RoleInstanceState {
- required string name = 1;
- optional string role = 2;
- required uint32 state = 4;
- required uint32 exitCode = 5;
- optional string command = 6;
+ required string name = 1;
+ optional string role = 2;
+ required uint32 state = 4;
+ required uint32 exitCode = 5;
+ optional string command = 6;
optional string diagnostics = 7;
- repeated string output = 8;
+ repeated string output = 8;
repeated string environment = 9;
- required uint32 roleId = 10;
- required bool released = 11;
- required int64 createTime = 12;
- required int64 startTime = 13;
- required string host = 14;
- required string hostURL = 15;
+ required uint32 roleId = 10;
+ required bool released = 11;
+ required int64 createTime = 12;
+ required int64 startTime = 13;
+ required string host = 14;
+ required string hostURL = 15;
optional string appVersion = 16;
}
@@ -65,9 +72,9 @@ message UpgradeContainersRequestProto {
/**
message to include
*/
- required string message = 1;
- repeated string container = 2;
- repeated string component = 3;
+ required string message = 1;
+ repeated string container = 2;
+ repeated string component = 3;
}
/**
@@ -181,9 +188,9 @@ message KillContainerResponseProto {
* AM suicide
*/
message AMSuicideRequestProto {
- required string text = 1;
- required int32 signal = 2;
- required int32 delay = 3;
+ required string text = 1;
+ required int32 signal = 2;
+ required int32 delay = 3;
}
/**
@@ -206,9 +213,9 @@ message GetInstanceDefinitionRequestProto {
* Get the definition back as three separate JSON strings
*/
message GetInstanceDefinitionResponseProto {
- required string internal = 1;
- required string resources = 2;
- required string application = 3;
+ required string internal = 1;
+ required string resources = 2;
+ required string application = 3;
}
@@ -233,42 +240,43 @@ message ApplicationLivenessInformationProto {
* see org.apache.slider.api.types.ComponentInformation
*/
message ComponentInformationProto {
- optional string name = 1;
- optional int32 priority = 2;
- optional int32 desired = 3;
- optional int32 actual = 4;
- optional int32 releasing = 5;
- optional int32 requested = 6;
- optional int32 failed = 7;
- optional int32 started = 8;
- optional int32 startFailed = 9;
- optional int32 completed = 10;
- optional int32 totalRequested = 11;
- optional string failureMessage = 12 ;
- optional int32 placementPolicy = 13;
- repeated string containers = 14;
+ optional string name = 1;
+ optional int32 priority = 2;
+ optional int32 desired = 3;
+ optional int32 actual = 4;
+ optional int32 releasing = 5;
+ optional int32 requested = 6;
+ optional int32 failed = 7;
+ optional int32 started = 8;
+ optional int32 startFailed = 9;
+ optional int32 completed = 10;
+ optional int32 totalRequested = 11;
+ optional string failureMessage =12;
+ optional int32 placementPolicy =13;
+ repeated string containers = 14;
optional int32 failedRecently = 15;
- optional int32 nodeFailed = 16;
- optional int32 preempted = 17;
+ optional int32 nodeFailed = 16;
+ optional int32 preempted = 17;
+ optional int32 pendingAntiAffineRequestCount = 18;
}
/*
* see org.apache.slider.api.types.ContainerInformation
*/
message ContainerInformationProto {
- optional string containerId = 1;
- optional string component = 2;
- optional bool released = 3;
- optional int32 state = 4;
- optional int32 exitCode = 5;
- optional string diagnostics = 6;
- optional int64 createTime = 7;
- optional int64 startTime = 8;
- repeated string output = 9;
- optional string host = 10;
- optional string hostURL = 11;
- optional string placement = 12;
- optional string appVersion = 13;
+ optional string containerId = 1;
+ optional string component = 2;
+ optional bool released = 3;
+ optional int32 state = 4;
+ optional int32 exitCode = 5;
+ optional string diagnostics = 6;
+ optional int64 createTime = 7;
+ optional int64 startTime = 8;
+ repeated string output = 9;
+ optional string host = 10;
+ optional string hostURL = 11;
+ optional string placement = 12;
+ optional string appVersion = 13;
}
@@ -279,10 +287,32 @@ message PingInformationProto {
optional string text = 1;
optional string verb = 2;
optional string body = 3;
- optional int64 time = 4;
+ optional int64 time = 4;
}
+message NodeEntryInformationProto {
+ required int32 priority = 1;
+ required int32 requested = 2;
+ required int32 starting = 3;
+ required int32 startFailed = 4;
+ required int32 failed = 5;
+ required int32 failedRecently= 6;
+ required int32 preempted = 7;
+ required int32 live = 8;
+ required int32 releasing = 9;
+ required int64 lastUsed = 10;
+}
+message NodeInformationProto {
+ required string hostname = 1;
+ required string state = 2;
+ required string httpAddress = 3;
+ required string rackName = 4;
+ required string labels = 5;
+ required string healthReport= 6;
+ required int64 lastUpdated = 7;
+ repeated NodeEntryInformationProto entries = 8;
+}
message GetModelRequestProto {
}
@@ -345,12 +375,12 @@ message WrappedJsonProto {
}
message GetCertificateStoreRequestProto {
- optional string hostname = 1;
+ optional string hostname = 1;
required string requesterId = 2;
- required string password = 3;
- required string type = 4;
+ required string password = 3;
+ required string type = 4;
}
message GetCertificateStoreResponseProto {
required bytes store = 1;
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
index 2cc13c2..6e21a38 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockAppState.groovy
@@ -19,7 +19,7 @@ package org.apache.slider.server.appmaster.model.mock
import org.apache.slider.providers.ProviderRole
import org.apache.slider.server.appmaster.management.MetricsAndMonitoring
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory
+import org.apache.slider.server.appmaster.state.AbstractClusterServices
import org.apache.slider.server.appmaster.state.AppState
/**
@@ -27,7 +27,7 @@ import org.apache.slider.server.appmaster.state.AppState
*/
class MockAppState extends AppState {
- public MockAppState(AbstractRecordFactory recordFactory) {
+ public MockAppState(AbstractClusterServices recordFactory) {
super(recordFactory, new MetricsAndMonitoring());
}
@@ -37,7 +37,7 @@ class MockAppState extends AppState {
* Instance with a mock record factory
*/
public MockAppState() {
- super(new MockRecordFactory(), new MetricsAndMonitoring());
+ super(new MockClusterServices(), new MetricsAndMonitoring());
}
public Map<String, ProviderRole> getRoleMap() {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy
new file mode 100644
index 0000000..d27a6bb
--- /dev/null
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockClusterServices.groovy
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.server.appmaster.model.mock
+
+import org.apache.hadoop.yarn.api.records.Resource
+import org.apache.slider.server.appmaster.state.AbstractClusterServices
+
+class MockClusterServices extends AbstractClusterServices {
+
+ @Override
+ Resource newResource() {
+ return new MockResource()
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy
deleted file mode 100644
index f7d353f..0000000
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/mock/MockRecordFactory.groovy
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.slider.server.appmaster.model.mock
-
-import org.apache.hadoop.yarn.api.records.Resource
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory
-
-class MockRecordFactory extends AbstractRecordFactory {
-
- @Override
- Resource newResource() {
- return new MockResource()
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
index e1964f5..5a7a891 100644
--- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/web/view/TestClusterSpecificationBlock.groovy
@@ -19,15 +19,14 @@ package org.apache.slider.server.appmaster.web.view
import com.google.inject.AbstractModule
import com.google.inject.Guice
import com.google.inject.Injector
-import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.hadoop.yarn.webapp.hamlet.Hamlet
import org.apache.slider.api.ClusterDescription
import org.apache.slider.providers.ProviderService
import org.apache.slider.server.appmaster.model.mock.MockAppState
import org.apache.slider.server.appmaster.model.mock.MockProviderService
-import org.apache.slider.server.appmaster.model.mock.MockRecordFactory
-import org.apache.slider.server.appmaster.state.AbstractRecordFactory
+import org.apache.slider.server.appmaster.model.mock.MockClusterServices
+import org.apache.slider.server.appmaster.state.AbstractClusterServices
import org.apache.slider.server.appmaster.state.AppState
import org.apache.slider.server.appmaster.state.ProviderAppState
import org.apache.slider.server.appmaster.web.WebAppApi
@@ -43,7 +42,7 @@ public class TestClusterSpecificationBlock {
@Before
public void setup() {
- AppState appState = new MyAppState(new MockRecordFactory());
+ AppState appState = new MyAppState(new MockClusterServices());
ProviderAppState providerAppState = new ProviderAppState(
"undefined",
appState)
@@ -79,7 +78,7 @@ public class TestClusterSpecificationBlock {
}
private static class MyAppState extends MockAppState {
- public MyAppState(AbstractRecordFactory recordFactory) {
+ public MyAppState(AbstractClusterServices recordFactory) {
super(recordFactory);
this.clusterStatus = new MockClusterDescription();
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
index d37fcea..4c43168 100644
--- a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
+++ b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/agent/TestAMAgentWebServices.java
@@ -37,7 +37,7 @@ import org.apache.slider.core.exceptions.SliderException;
import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
import org.apache.slider.server.appmaster.model.mock.MockFactory;
import org.apache.slider.server.appmaster.model.mock.MockProviderService;
-import org.apache.slider.server.appmaster.model.mock.MockRecordFactory;
+import org.apache.slider.server.appmaster.model.mock.MockClusterServices;
import org.apache.slider.server.appmaster.state.AppState;
import org.apache.slider.server.appmaster.state.ProviderAppState;
import org.apache.slider.server.appmaster.state.SimpleReleaseSelector;
@@ -126,7 +126,7 @@ public class TestAMAgentWebServices {
historyPath =
new org.apache.hadoop.fs.Path(historyWorkDir.toURI());
fs.delete(historyPath, true);
- appState = new AppState(new MockRecordFactory(), new MetricsAndMonitoring());
+ appState = new AppState(new MockClusterServices(), new MetricsAndMonitoring());
appState.setContainerLimits(RM_MAX_RAM, RM_MAX_CORES);
appState.buildInstance(
factory.newInstanceDefinition(0, 0, 0),
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/de040cbb/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
index 7cb9395..df7e002 100644
--- a/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
+++ b/slider-core/src/test/java/org/apache/slider/server/appmaster/web/rest/management/TestAMManagementWebServices.java
@@ -42,7 +42,7 @@ import org.apache.slider.core.persist.JsonSerDeser;
import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
import org.apache.slider.server.appmaster.model.mock.MockFactory;
import org.apache.slider.server.appmaster.model.mock.MockProviderService;
-import org.apache.slider.server.appmaster.model.mock.MockRecordFactory;
+import org.apache.slider.server.appmaster.model.mock.MockClusterServices;
import org.apache.slider.server.appmaster.state.AppState;
import org.apache.slider.server.appmaster.state.ProviderAppState;
import org.apache.slider.server.appmaster.state.SimpleReleaseSelector;
@@ -167,7 +167,7 @@ public class TestAMManagementWebServices extends JerseyTest {
historyPath =
new org.apache.hadoop.fs.Path(historyWorkDir.toURI());
fs.delete(historyPath, true);
- appState = new AppState(new MockRecordFactory(), new MetricsAndMonitoring());
+ appState = new AppState(new MockClusterServices(), new MetricsAndMonitoring());
appState.setContainerLimits(RM_MAX_RAM, RM_MAX_CORES);
appState.buildInstance(
factory.newInstanceDefinition(0, 0, 0),
[11/14] incubator-slider git commit: SLIDER-953 security auth
failures should return exit code EXIT_UNAUTHORIZED "41"
Posted by st...@apache.org.
SLIDER-953 security auth failures should return exit code EXIT_UNAUTHORIZED "41"
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/5ff77d06
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/5ff77d06
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/5ff77d06
Branch: refs/heads/develop
Commit: 5ff77d06da57981111e097d4891ea59434af2467
Parents: 88a7b34
Author: Steve Loughran <st...@apache.org>
Authored: Mon Oct 26 16:26:57 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Oct 26 16:26:57 2015 +0000
----------------------------------------------------------------------
.../org/apache/slider/client/SliderClient.java | 32 ++++++++------------
.../apache/slider/common/tools/SliderUtils.java | 9 +++---
.../slideram/SliderAMClientProvider.java | 3 +-
.../server/appmaster/SliderAppMaster.java | 15 ++++-----
.../security/SecurityConfiguration.java | 20 ++++--------
5 files changed, 30 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/5ff77d06/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 16e5c9a..3404039 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
@@ -423,8 +423,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
break;
case ACTION_INSTALL_KEYTAB:
- exitCode =
- actionInstallKeytab(serviceArgs.getActionInstallKeytabArgs());
+ exitCode = actionInstallKeytab(serviceArgs.getActionInstallKeytabArgs());
break;
case ACTION_INSTALL_PACKAGE:
@@ -502,7 +501,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
yarnAppListClient =
new YarnAppListClient(yarnClient, getUsername(), getConfig());
// create the filesystem
- sliderFileSystem = new SliderFileSystem(getConfig());
+ sliderFileSystem = new SliderFileSystem(getConfig());
}
/**
@@ -573,7 +572,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
if (client != null) {
// set up the permissions. This must be done differently on a secure cluster from an insecure
// one
- List<ACL> zkperms = new ArrayList<ACL>();
+ List<ACL> zkperms = new ArrayList<>();
if (UserGroupInformation.isSecurityEnabled()) {
zkperms.add(new ACL(ZooDefs.Perms.ALL, ZooDefs.Ids.AUTH_IDS));
zkperms.add(new ACL(ZooDefs.Perms.READ, ZooDefs.Ids.ANYONE_ID_UNSAFE));
@@ -1972,13 +1971,10 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
instanceDefinition.resolve();
launchedInstanceDefinition = instanceDefinition;
- ConfTreeOperations internalOperations =
- instanceDefinition.getInternalOperations();
+ ConfTreeOperations internalOperations = instanceDefinition.getInternalOperations();
MapOperations internalOptions = internalOperations.getGlobalOptions();
- ConfTreeOperations resourceOperations =
- instanceDefinition.getResourceOperations();
- ConfTreeOperations appOperations =
- instanceDefinition.getAppConfOperations();
+ ConfTreeOperations resourceOperations = instanceDefinition.getResourceOperations();
+ ConfTreeOperations appOperations = instanceDefinition.getAppConfOperations();
Path generatedConfDirPath =
createPathThatMustExist(internalOptions.getMandatoryOption(
InternalKeys.INTERNAL_GENERATED_CONF_PATH));
@@ -2237,9 +2233,6 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
if (clusterSecure) {
// if the cluster is secure, make sure that
// the relevant security settings go over
-/*
- addConfOptionToCLI(commandLine, config, KEY_SECURITY);
-*/
addConfOptionToCLI(commandLine,
config,
DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY);
@@ -2292,7 +2285,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
if (ArrayUtils.isEmpty(envs)) {
return Collections.emptyMap();
}
- Map<String, String> amLaunchEnv = new HashMap<String, String>();
+ Map<String, String> amLaunchEnv = new HashMap<>();
for (String env : envs) {
if (StringUtils.isNotEmpty(env)) {
// Each env name/value is separated by equals sign (=)
@@ -2328,7 +2321,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
if (placeholderMatcher.find()) {
String placeholderKey = placeholderMatcher.group();
String systemKey = placeholderKey
- .substring(2, placeholderKey.length() - 1).toUpperCase()
+ .substring(2, placeholderKey.length() - 1).toUpperCase(Locale.ENGLISH)
.replaceAll("\\.", "_");
String placeholderValue = SliderUtils.getSystemEnv(systemKey);
log.debug("Placeholder {}={}", placeholderKey, placeholderValue);
@@ -2478,8 +2471,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
* @throws FileNotFoundException if the path does not exist
*/
public Path createPathThatMustExist(String uri) throws
- SliderException,
- IOException {
+ SliderException, IOException {
return sliderFileSystem.createPathThatMustExist(uri);
}
@@ -2675,9 +2667,9 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
throws IOException, YarnException {
Set<String> appInstances = getApplicationList(clustername, args);
// getApplicationList never returns null
- return appInstances.size() > 0 ? EXIT_SUCCESS
- : (appInstances.size() == 0 && isUnset(clustername)) ? EXIT_SUCCESS
- : EXIT_FALSE;
+ return !appInstances.isEmpty() ? EXIT_SUCCESS
+ : ((appInstances.isEmpty() && isUnset(clustername)) ? EXIT_SUCCESS
+ : EXIT_FALSE);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/5ff77d06/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
index cc19052..0349ebd 100644
--- a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
+++ b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
@@ -1225,11 +1225,11 @@ public final class SliderUtils {
* @param conf configuration to look at
* @return true if the cluster is secure
* @throws IOException cluster is secure
- * @throws BadConfigException the configuration/process is invalid
+ * @throws SliderException the configuration/process is invalid
*/
public static boolean maybeInitSecurity(Configuration conf) throws
IOException,
- BadConfigException {
+ SliderException {
boolean clusterSecure = isHadoopClusterSecure(conf);
if (clusterSecure) {
log.debug("Enabling security");
@@ -1247,7 +1247,7 @@ public final class SliderUtils {
*/
public static boolean initProcessSecurity(Configuration conf) throws
IOException,
- BadConfigException {
+ SliderException {
if (processSecurityAlreadyInitialized.compareAndSet(true, true)) {
//security is already inited
@@ -1273,7 +1273,8 @@ public final class SliderUtils {
log.debug("Authenticating as {}", authUser);
log.debug("Login user is {}", UserGroupInformation.getLoginUser());
if (!UserGroupInformation.isSecurityEnabled()) {
- throw new BadConfigException("Although secure mode is enabled," +
+ throw new SliderException(LauncherExitCodes.EXIT_UNAUTHORIZE,
+ "Although secure mode is enabled," +
"the application has already set up its user as an insecure entity %s",
authUser);
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/5ff77d06/slider-core/src/main/java/org/apache/slider/providers/slideram/SliderAMClientProvider.java
----------------------------------------------------------------------
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 e1dc4f9..9bd4dc9 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
@@ -174,8 +174,7 @@ public class SliderAMClientProvider extends AbstractClientProvider
Path tempPath, boolean miniClusterTestRun)
throws IOException, SliderException {
- Map<String, LocalResource> providerResources =
- new HashMap<String, LocalResource>();
+ Map<String, LocalResource> providerResources = new HashMap<>();
ProviderUtils.addProviderJar(providerResources,
this,
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/5ff77d06/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 777fa04..5861256 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
@@ -492,7 +492,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
// create and register monitoring services
addService(metricsAndMonitoring);
metrics = metricsAndMonitoring.getMetrics();
-/*
+/* TODO: turn these one once the metrics testing is more under control
metrics.registerAll(new ThreadStatesGaugeSet());
metrics.registerAll(new MemoryUsageGaugeSet());
metrics.registerAll(new GarbageCollectorMetricSet());
@@ -678,8 +678,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
*/
appMasterContainerID = ConverterUtils.toContainerId(
SliderUtils.mandatoryEnvVariable(
- ApplicationConstants.Environment.CONTAINER_ID.name())
- );
+ ApplicationConstants.Environment.CONTAINER_ID.name()));
appAttemptID = appMasterContainerID.getApplicationAttemptId();
ApplicationId appid = appAttemptID.getApplicationId();
@@ -792,8 +791,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
// build the handler for RM request/release operations; this uses
// the max value as part of its lookup
- rmOperationHandler = new AsyncRMOperationHandler(asyncRMClient,
- maxResources);
+ rmOperationHandler = new AsyncRMOperationHandler(asyncRMClient, maxResources);
// set the RM-defined maximum cluster values
appInformation.put(ResourceKeys.YARN_CORES, Integer.toString(containerMaxCores));
@@ -814,8 +812,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
// principal. Can do so now since AM registration with RM above required
// tokens associated to principal
String principal = securityConfiguration.getPrincipal();
- File localKeytabFile =
- securityConfiguration.getKeytabFile(instanceDefinition);
+ File localKeytabFile = securityConfiguration.getKeytabFile(instanceDefinition);
// Now log in...
login(principal, localKeytabFile);
// obtain new FS reference that should be kerberos based and different
@@ -832,8 +829,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
Configuration providerConf =
providerService.loadProviderConfigurationInformation(confDir);
- providerService
- .initializeApplicationConfiguration(instanceDefinition, fs);
+ providerService.initializeApplicationConfiguration(instanceDefinition, fs);
providerService.validateApplicationConfiguration(instanceDefinition,
confDir,
@@ -1080,6 +1076,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
protected void login(String principal, File localKeytabFile)
throws IOException, SliderException {
+ log.info("Logging in as {} with keytab {}", principal, localKeytabFile);
UserGroupInformation.loginUserFromKeytab(principal,
localKeytabFile.getAbsolutePath());
validateLoginUser(UserGroupInformation.getLoginUser());
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/5ff77d06/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
index 4ff6916..a01fb18 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/security/SecurityConfiguration.java
@@ -17,18 +17,11 @@
package org.apache.slider.server.appmaster.security;
import com.google.common.base.Preconditions;
-import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileUtil;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.RawLocalFileSystem;
-import org.apache.hadoop.fs.permission.FsAction;
-import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.slider.common.SliderExitCodes;
+import static org.apache.slider.core.main.LauncherExitCodes.EXIT_UNAUTHORIZE;
import org.apache.slider.common.SliderKeys;
import org.apache.slider.common.SliderXmlConfKeys;
-import org.apache.slider.common.tools.SliderFileSystem;
import org.apache.slider.common.tools.SliderUtils;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.exceptions.SliderException;
@@ -39,7 +32,7 @@ import java.io.File;
import java.io.IOException;
/**
- *
+ * Class keeping code security information
*/
public class SecurityConfiguration {
@@ -71,7 +64,7 @@ public class SecurityConfiguration {
try {
loginUser = getLoginUser();
} catch (IOException e) {
- throw new SliderException(SliderExitCodes.EXIT_BAD_STATE, e,
+ throw new SliderException(EXIT_UNAUTHORIZE, e,
"No principal configured for the application and "
+ "exception raised during retrieval of login user. "
+ "Unable to proceed with application "
@@ -81,7 +74,7 @@ public class SecurityConfiguration {
SliderXmlConfKeys.KEY_KEYTAB_PRINCIPAL);
}
if (loginUser == null) {
- throw new SliderException(SliderExitCodes.EXIT_BAD_CONFIGURATION,
+ throw new SliderException(EXIT_UNAUTHORIZE,
"No principal configured for the application "
+ "and no login user found. "
+ "Unable to proceed with application "
@@ -100,7 +93,7 @@ public class SecurityConfiguration {
.getComponent(SliderKeys.COMPONENT_AM)
.get(SliderXmlConfKeys.KEY_AM_LOGIN_KEYTAB_NAME);
if (SliderUtils.isSet(keytabFullPath) && SliderUtils.isSet(keytabName)) {
- throw new SliderException(SliderExitCodes.EXIT_BAD_CONFIGURATION,
+ throw new SliderException(EXIT_UNAUTHORIZE,
"Both a keytab on the cluster host (%s) and a"
+ " keytab to be retrieved from HDFS (%s) are"
+ " specified. Please configure only one keytab"
@@ -160,8 +153,7 @@ public class SecurityConfiguration {
// download keytab to local, protected directory
localKeytabFile = new File(SliderKeys.KEYTAB_DIR, keytabName);
} else {
- log.info("Leveraging host keytab file {} for login",
- keytabFullPath);
+ log.info("Using host keytab file {} for login", keytabFullPath);
localKeytabFile = new File(keytabFullPath);
}
return localKeytabFile;
[12/14] incubator-slider git commit: Merge branch 'develop' into
feature/SLIDER-82-anti-affinity-attempt-2
Posted by st...@apache.org.
Merge branch 'develop' into feature/SLIDER-82-anti-affinity-attempt-2
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/65617d51
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/65617d51
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/65617d51
Branch: refs/heads/develop
Commit: 65617d51be32f2e5c48143b2c5c71681cc946aca
Parents: 5ff77d0 49bf0f1
Author: Steve Loughran <st...@apache.org>
Authored: Wed Oct 28 17:16:24 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Wed Oct 28 17:16:24 2015 +0000
----------------------------------------------------------------------
NOTICE | 2 +-
app-packages/accumulo/pom.xml | 2 +-
.../accumulo/src/license/THIRD-PARTY.properties | 9 +--
.../command-logger/application-pkg/pom.xml | 2 +-
app-packages/command-logger/slider-pkg/pom.xml | 2 +-
app-packages/hbase-win/pom.xml | 2 +-
app-packages/hbase/pom.xml | 2 +-
app-packages/pom.xml | 2 +-
app-packages/storm-win/pom.xml | 2 +-
app-packages/storm/pom.xml | 2 +-
pom.xml | 33 +++++++++-
slider-agent/pom.xml | 2 +-
slider-agent/src/main/python/agent/main.py | 2 +-
slider-assembly/pom.xml | 63 +++++++++++++++++---
slider-assembly/src/assembly/slider-bin.xml | 6 ++
.../src/assembly/slider-dependency.xml | 38 ++++++++++++
slider-core/pom.xml | 10 +++-
slider-core/src/license/THIRD-PARTY.properties | 4 +-
.../org/apache/slider/client/SliderClient.java | 11 ++--
.../apache/slider/common/SliderXmlConfKeys.java | 34 ++++++++++-
.../apache/slider/common/tools/SliderUtils.java | 4 +-
.../slider/core/build/InstanceBuilder.java | 6 +-
.../server/appmaster/SliderAppMaster.java | 4 +-
.../appmaster/monkey/ChaosMonkeyService.java | 3 +-
.../security/FsDelegationTokenManager.java | 13 ++--
.../slider/client/TestCommonArgParsing.groovy | 5 +-
.../model/mock/MockContainerStatus.groovy | 3 +
.../TestFsDelegationTokenManager.groovy | 7 ++-
.../slider/test/YarnMiniClusterTestBase.groovy | 3 +-
slider-funtest/pom.xml | 2 +-
.../src/license/THIRD-PARTY.properties | 4 +-
.../funtest/framework/CommandTestBase.groovy | 2 -
.../clusters/remote/slider/slider-client.xml | 7 ++-
33 files changed, 221 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/65617d51/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/65617d51/slider-core/pom.xml
----------------------------------------------------------------------
diff --cc slider-core/pom.xml
index 7e13b92,42b5f28..704fa06
--- a/slider-core/pom.xml
+++ b/slider-core/pom.xml
@@@ -258,13 -258,16 +258,21 @@@
<scope>compile</scope>
</dependency>
+ <!-- if the move to hadoop-hdfs-client JAR causes problems insert this
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-hdfs</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ -->
+
<dependency>
<groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-hdfs</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-client</artifactId>
<scope>compile</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/65617d51/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
----------------------------------------------------------------------
diff --cc slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index 3404039,9a77c67..7a25629
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@@ -2233,9 -2236,12 +2232,9 @@@ public class SliderClient extends Abstr
if (clusterSecure) {
// if the cluster is secure, make sure that
// the relevant security settings go over
-/*
- addConfOptionToCLI(commandLine, config, KEY_SECURITY);
-*/
addConfOptionToCLI(commandLine,
config,
- DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY);
+ DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY);
}
// write out the path output
commandLine.addOutAndErrFiles(STDOUT_AM, STDERR_AM);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/65617d51/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/65617d51/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------
[07/14] incubator-slider git commit: SLIDER-947 build node map from
yarn update reports; serve via REST/IPC. API done;
now trying to make sure RM notifies AM of state, which is being checked via
new metrics
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
index ba16460..569660d 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
@@ -20315,15 +20315,15 @@ public final class Messages {
*/
int getReleasing();
- // required int64 lastUpdated = 10;
+ // required int64 lastUsed = 10;
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- boolean hasLastUpdated();
+ boolean hasLastUsed();
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- long getLastUpdated();
+ long getLastUsed();
}
/**
* Protobuf type {@code org.apache.slider.api.NodeEntryInformationProto}
@@ -20423,7 +20423,7 @@ public final class Messages {
}
case 80: {
bitField0_ |= 0x00000200;
- lastUpdated_ = input.readInt64();
+ lastUsed_ = input.readInt64();
break;
}
}
@@ -20610,20 +20610,20 @@ public final class Messages {
return releasing_;
}
- // required int64 lastUpdated = 10;
- public static final int LASTUPDATED_FIELD_NUMBER = 10;
- private long lastUpdated_;
+ // required int64 lastUsed = 10;
+ public static final int LASTUSED_FIELD_NUMBER = 10;
+ private long lastUsed_;
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- public boolean hasLastUpdated() {
+ public boolean hasLastUsed() {
return ((bitField0_ & 0x00000200) == 0x00000200);
}
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- public long getLastUpdated() {
- return lastUpdated_;
+ public long getLastUsed() {
+ return lastUsed_;
}
private void initFields() {
@@ -20636,7 +20636,7 @@ public final class Messages {
preempted_ = 0;
live_ = 0;
releasing_ = 0;
- lastUpdated_ = 0L;
+ lastUsed_ = 0L;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -20679,7 +20679,7 @@ public final class Messages {
memoizedIsInitialized = 0;
return false;
}
- if (!hasLastUpdated()) {
+ if (!hasLastUsed()) {
memoizedIsInitialized = 0;
return false;
}
@@ -20718,7 +20718,7 @@ public final class Messages {
output.writeInt32(9, releasing_);
}
if (((bitField0_ & 0x00000200) == 0x00000200)) {
- output.writeInt64(10, lastUpdated_);
+ output.writeInt64(10, lastUsed_);
}
getUnknownFields().writeTo(output);
}
@@ -20767,7 +20767,7 @@ public final class Messages {
}
if (((bitField0_ & 0x00000200) == 0x00000200)) {
size += com.google.protobuf.CodedOutputStream
- .computeInt64Size(10, lastUpdated_);
+ .computeInt64Size(10, lastUsed_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
@@ -20837,10 +20837,10 @@ public final class Messages {
result = result && (getReleasing()
== other.getReleasing());
}
- result = result && (hasLastUpdated() == other.hasLastUpdated());
- if (hasLastUpdated()) {
- result = result && (getLastUpdated()
- == other.getLastUpdated());
+ result = result && (hasLastUsed() == other.hasLastUsed());
+ if (hasLastUsed()) {
+ result = result && (getLastUsed()
+ == other.getLastUsed());
}
result = result &&
getUnknownFields().equals(other.getUnknownFields());
@@ -20891,9 +20891,9 @@ public final class Messages {
hash = (37 * hash) + RELEASING_FIELD_NUMBER;
hash = (53 * hash) + getReleasing();
}
- if (hasLastUpdated()) {
- hash = (37 * hash) + LASTUPDATED_FIELD_NUMBER;
- hash = (53 * hash) + hashLong(getLastUpdated());
+ if (hasLastUsed()) {
+ hash = (37 * hash) + LASTUSED_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getLastUsed());
}
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
@@ -21022,7 +21022,7 @@ public final class Messages {
bitField0_ = (bitField0_ & ~0x00000080);
releasing_ = 0;
bitField0_ = (bitField0_ & ~0x00000100);
- lastUpdated_ = 0L;
+ lastUsed_ = 0L;
bitField0_ = (bitField0_ & ~0x00000200);
return this;
}
@@ -21091,7 +21091,7 @@ public final class Messages {
if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
to_bitField0_ |= 0x00000200;
}
- result.lastUpdated_ = lastUpdated_;
+ result.lastUsed_ = lastUsed_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -21135,8 +21135,8 @@ public final class Messages {
if (other.hasReleasing()) {
setReleasing(other.getReleasing());
}
- if (other.hasLastUpdated()) {
- setLastUpdated(other.getLastUpdated());
+ if (other.hasLastUsed()) {
+ setLastUsed(other.getLastUsed());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
@@ -21179,7 +21179,7 @@ public final class Messages {
return false;
}
- if (!hasLastUpdated()) {
+ if (!hasLastUsed()) {
return false;
}
@@ -21502,35 +21502,35 @@ public final class Messages {
return this;
}
- // required int64 lastUpdated = 10;
- private long lastUpdated_ ;
+ // required int64 lastUsed = 10;
+ private long lastUsed_ ;
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- public boolean hasLastUpdated() {
+ public boolean hasLastUsed() {
return ((bitField0_ & 0x00000200) == 0x00000200);
}
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- public long getLastUpdated() {
- return lastUpdated_;
+ public long getLastUsed() {
+ return lastUsed_;
}
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- public Builder setLastUpdated(long value) {
+ public Builder setLastUsed(long value) {
bitField0_ |= 0x00000200;
- lastUpdated_ = value;
+ lastUsed_ = value;
onChanged();
return this;
}
/**
- * <code>required int64 lastUpdated = 10;</code>
+ * <code>required int64 lastUsed = 10;</code>
*/
- public Builder clearLastUpdated() {
+ public Builder clearLastUsed() {
bitField0_ = (bitField0_ & ~0x00000200);
- lastUpdated_ = 0L;
+ lastUsed_ = 0L;
onChanged();
return this;
}
@@ -21642,20 +21642,37 @@ public final class Messages {
// required int64 lastUpdated = 7;
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
boolean hasLastUpdated();
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
long getLastUpdated();
+
+ // repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto>
+ getEntriesList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto getEntries(int index);
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ int getEntriesCount();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ java.util.List<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesOrBuilderList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder getEntriesOrBuilder(
+ int index);
}
/**
* Protobuf type {@code org.apache.slider.api.NodeInformationProto}
@@ -21743,6 +21760,14 @@ public final class Messages {
lastUpdated_ = input.readInt64();
break;
}
+ case 66: {
+ if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeEntryInformationProto>();
+ mutable_bitField0_ |= 0x00000080;
+ }
+ entries_.add(input.readMessage(org.apache.slider.api.proto.Messages.NodeEntryInformationProto.PARSER, extensionRegistry));
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -21751,6 +21776,9 @@ public final class Messages {
throw new com.google.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
+ if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = java.util.Collections.unmodifiableList(entries_);
+ }
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
@@ -22046,25 +22074,53 @@ public final class Messages {
private long lastUpdated_;
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
public boolean hasLastUpdated() {
return ((bitField0_ & 0x00000040) == 0x00000040);
}
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
public long getLastUpdated() {
return lastUpdated_;
}
+ // repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;
+ public static final int ENTRIES_FIELD_NUMBER = 8;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> entries_;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> getEntriesList() {
+ return entries_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesOrBuilderList() {
+ return entries_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public int getEntriesCount() {
+ return entries_.size();
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto getEntries(int index) {
+ return entries_.get(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder getEntriesOrBuilder(
+ int index) {
+ return entries_.get(index);
+ }
+
private void initFields() {
hostname_ = "";
state_ = "";
@@ -22073,6 +22129,7 @@ public final class Messages {
labels_ = "";
healthReport_ = "";
lastUpdated_ = 0L;
+ entries_ = java.util.Collections.emptyList();
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -22107,6 +22164,12 @@ public final class Messages {
memoizedIsInitialized = 0;
return false;
}
+ for (int i = 0; i < getEntriesCount(); i++) {
+ if (!getEntries(i).isInitialized()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ }
memoizedIsInitialized = 1;
return true;
}
@@ -22135,6 +22198,9 @@ public final class Messages {
if (((bitField0_ & 0x00000040) == 0x00000040)) {
output.writeInt64(7, lastUpdated_);
}
+ for (int i = 0; i < entries_.size(); i++) {
+ output.writeMessage(8, entries_.get(i));
+ }
getUnknownFields().writeTo(output);
}
@@ -22172,6 +22238,10 @@ public final class Messages {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(7, lastUpdated_);
}
+ for (int i = 0; i < entries_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(8, entries_.get(i));
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -22230,6 +22300,8 @@ public final class Messages {
result = result && (getLastUpdated()
== other.getLastUpdated());
}
+ result = result && getEntriesList()
+ .equals(other.getEntriesList());
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -22271,6 +22343,10 @@ public final class Messages {
hash = (37 * hash) + LASTUPDATED_FIELD_NUMBER;
hash = (53 * hash) + hashLong(getLastUpdated());
}
+ if (getEntriesCount() > 0) {
+ hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
+ hash = (53 * hash) + getEntriesList().hashCode();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -22372,6 +22448,7 @@ public final class Messages {
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getEntriesFieldBuilder();
}
}
private static Builder create() {
@@ -22394,6 +22471,12 @@ public final class Messages {
bitField0_ = (bitField0_ & ~0x00000020);
lastUpdated_ = 0L;
bitField0_ = (bitField0_ & ~0x00000040);
+ if (entriesBuilder_ == null) {
+ entries_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000080);
+ } else {
+ entriesBuilder_.clear();
+ }
return this;
}
@@ -22450,6 +22533,15 @@ public final class Messages {
to_bitField0_ |= 0x00000040;
}
result.lastUpdated_ = lastUpdated_;
+ if (entriesBuilder_ == null) {
+ if (((bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = java.util.Collections.unmodifiableList(entries_);
+ bitField0_ = (bitField0_ & ~0x00000080);
+ }
+ result.entries_ = entries_;
+ } else {
+ result.entries_ = entriesBuilder_.build();
+ }
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -22499,6 +22591,32 @@ public final class Messages {
if (other.hasLastUpdated()) {
setLastUpdated(other.getLastUpdated());
}
+ if (entriesBuilder_ == null) {
+ if (!other.entries_.isEmpty()) {
+ if (entries_.isEmpty()) {
+ entries_ = other.entries_;
+ bitField0_ = (bitField0_ & ~0x00000080);
+ } else {
+ ensureEntriesIsMutable();
+ entries_.addAll(other.entries_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.entries_.isEmpty()) {
+ if (entriesBuilder_.isEmpty()) {
+ entriesBuilder_.dispose();
+ entriesBuilder_ = null;
+ entries_ = other.entries_;
+ bitField0_ = (bitField0_ & ~0x00000080);
+ entriesBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getEntriesFieldBuilder() : null;
+ } else {
+ entriesBuilder_.addAllMessages(other.entries_);
+ }
+ }
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -22532,6 +22650,12 @@ public final class Messages {
return false;
}
+ for (int i = 0; i < getEntriesCount(); i++) {
+ if (!getEntries(i).isInitialized()) {
+
+ return false;
+ }
+ }
return true;
}
@@ -23002,30 +23126,18 @@ public final class Messages {
private long lastUpdated_ ;
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
public boolean hasLastUpdated() {
return ((bitField0_ & 0x00000040) == 0x00000040);
}
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
public long getLastUpdated() {
return lastUpdated_;
}
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
public Builder setLastUpdated(long value) {
bitField0_ |= 0x00000040;
@@ -23035,10 +23147,6 @@ public final class Messages {
}
/**
* <code>required int64 lastUpdated = 7;</code>
- *
- * <pre>
- * repeating NodeEntryProto entries = 8;
- * </pre>
*/
public Builder clearLastUpdated() {
bitField0_ = (bitField0_ & ~0x00000040);
@@ -23047,6 +23155,246 @@ public final class Messages {
return this;
}
+ // repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> entries_ =
+ java.util.Collections.emptyList();
+ private void ensureEntriesIsMutable() {
+ if (!((bitField0_ & 0x00000080) == 0x00000080)) {
+ entries_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeEntryInformationProto>(entries_);
+ bitField0_ |= 0x00000080;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder> entriesBuilder_;
+
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto> getEntriesList() {
+ if (entriesBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(entries_);
+ } else {
+ return entriesBuilder_.getMessageList();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public int getEntriesCount() {
+ if (entriesBuilder_ == null) {
+ return entries_.size();
+ } else {
+ return entriesBuilder_.getCount();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto getEntries(int index) {
+ if (entriesBuilder_ == null) {
+ return entries_.get(index);
+ } else {
+ return entriesBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder setEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto value) {
+ if (entriesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntriesIsMutable();
+ entries_.set(index, value);
+ onChanged();
+ } else {
+ entriesBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder setEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder builderForValue) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ entriesBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(org.apache.slider.api.proto.Messages.NodeEntryInformationProto value) {
+ if (entriesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntriesIsMutable();
+ entries_.add(value);
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto value) {
+ if (entriesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntriesIsMutable();
+ entries_.add(index, value);
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder builderForValue) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.add(builderForValue.build());
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addEntries(
+ int index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder builderForValue) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ entriesBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder addAllEntries(
+ java.lang.Iterable<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProto> values) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ super.addAll(values, entries_);
+ onChanged();
+ } else {
+ entriesBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder clearEntries() {
+ if (entriesBuilder_ == null) {
+ entries_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000080);
+ onChanged();
+ } else {
+ entriesBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public Builder removeEntries(int index) {
+ if (entriesBuilder_ == null) {
+ ensureEntriesIsMutable();
+ entries_.remove(index);
+ onChanged();
+ } else {
+ entriesBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder getEntriesBuilder(
+ int index) {
+ return getEntriesFieldBuilder().getBuilder(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder getEntriesOrBuilder(
+ int index) {
+ if (entriesBuilder_ == null) {
+ return entries_.get(index); } else {
+ return entriesBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesOrBuilderList() {
+ if (entriesBuilder_ != null) {
+ return entriesBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(entries_);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder addEntriesBuilder() {
+ return getEntriesFieldBuilder().addBuilder(
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder addEntriesBuilder(
+ int index) {
+ return getEntriesFieldBuilder().addBuilder(
+ index, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeEntryInformationProto entries = 8;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder>
+ getEntriesBuilderList() {
+ return getEntriesFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>
+ getEntriesFieldBuilder() {
+ if (entriesBuilder_ == null) {
+ entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeEntryInformationProto, org.apache.slider.api.proto.Messages.NodeEntryInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeEntryInformationProtoOrBuilder>(
+ entries_,
+ ((bitField0_ & 0x00000080) == 0x00000080),
+ getParentForChildren(),
+ isClean());
+ entries_ = null;
+ }
+ return entriesBuilder_;
+ }
+
// @@protoc_insertion_point(builder_scope:org.apache.slider.api.NodeInformationProto)
}
@@ -31610,17 +31958,1784 @@ public final class Messages {
// @@protoc_insertion_point(class_scope:org.apache.slider.api.GetCertificateStoreResponseProto)
}
- private static com.google.protobuf.Descriptors.Descriptor
- internal_static_org_apache_slider_api_RoleInstanceState_descriptor;
- private static
- com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internal_static_org_apache_slider_api_RoleInstanceState_fieldAccessorTable;
- private static com.google.protobuf.Descriptors.Descriptor
- internal_static_org_apache_slider_api_StopClusterRequestProto_descriptor;
- private static
- com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internal_static_org_apache_slider_api_StopClusterRequestProto_fieldAccessorTable;
- private static com.google.protobuf.Descriptors.Descriptor
+ public interface GetLiveNodesRequestProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodesRequestProto}
+ */
+ public static final class GetLiveNodesRequestProto extends
+ com.google.protobuf.GeneratedMessage
+ implements GetLiveNodesRequestProtoOrBuilder {
+ // Use GetLiveNodesRequestProto.newBuilder() to construct.
+ private GetLiveNodesRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private GetLiveNodesRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final GetLiveNodesRequestProto defaultInstance;
+ public static GetLiveNodesRequestProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public GetLiveNodesRequestProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetLiveNodesRequestProto(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ initFields();
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(input, unknownFields,
+ extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<GetLiveNodesRequestProto> PARSER =
+ new com.google.protobuf.AbstractParser<GetLiveNodesRequestProto>() {
+ public GetLiveNodesRequestProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetLiveNodesRequestProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GetLiveNodesRequestProto> getParserForType() {
+ return PARSER;
+ }
+
+ private void initFields() {
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ private static final long serialVersionUID = 0L;
+ @java.lang.Override
+ protected java.lang.Object writeReplace()
+ throws java.io.ObjectStreamException {
+ return super.writeReplace();
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto other = (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto) obj;
+
+ boolean result = true;
+ result = result &&
+ getUnknownFields().equals(other.getUnknownFields());
+ return result;
+ }
+
+ private int memoizedHashCode = 0;
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptorForType().hashCode();
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodesRequestProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.GetLiveNodesRequestProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(buildPartial());
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesRequestProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto build() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto buildPartial() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto result = new org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto(this);
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto other) {
+ if (other == org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto.getDefaultInstance()) return this;
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.GetLiveNodesRequestProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetLiveNodesRequestProto)
+ }
+
+ static {
+ defaultInstance = new GetLiveNodesRequestProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetLiveNodesRequestProto)
+ }
+
+ public interface GetLiveNodesResponseProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // repeated string names = 1;
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ java.util.List<java.lang.String>
+ getNamesList();
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ int getNamesCount();
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ java.lang.String getNames(int index);
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getNamesBytes(int index);
+
+ // repeated .org.apache.slider.api.NodeInformationProto nodes = 2;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto>
+ getNodesList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeInformationProto getNodes(int index);
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ int getNodesCount();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ java.util.List<? extends org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesOrBuilderList();
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder getNodesOrBuilder(
+ int index);
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodesResponseProto}
+ */
+ public static final class GetLiveNodesResponseProto extends
+ com.google.protobuf.GeneratedMessage
+ implements GetLiveNodesResponseProtoOrBuilder {
+ // Use GetLiveNodesResponseProto.newBuilder() to construct.
+ private GetLiveNodesResponseProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private GetLiveNodesResponseProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final GetLiveNodesResponseProto defaultInstance;
+ public static GetLiveNodesResponseProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public GetLiveNodesResponseProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetLiveNodesResponseProto(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ initFields();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(input, unknownFields,
+ extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+ names_ = new com.google.protobuf.LazyStringArrayList();
+ mutable_bitField0_ |= 0x00000001;
+ }
+ names_.add(input.readBytes());
+ break;
+ }
+ case 18: {
+ if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeInformationProto>();
+ mutable_bitField0_ |= 0x00000002;
+ }
+ nodes_.add(input.readMessage(org.apache.slider.api.proto.Messages.NodeInformationProto.PARSER, extensionRegistry));
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this);
+ } finally {
+ if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+ names_ = new com.google.protobuf.UnmodifiableLazyStringList(names_);
+ }
+ if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = java.util.Collections.unmodifiableList(nodes_);
+ }
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<GetLiveNodesResponseProto> PARSER =
+ new com.google.protobuf.AbstractParser<GetLiveNodesResponseProto>() {
+ public GetLiveNodesResponseProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetLiveNodesResponseProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GetLiveNodesResponseProto> getParserForType() {
+ return PARSER;
+ }
+
+ // repeated string names = 1;
+ public static final int NAMES_FIELD_NUMBER = 1;
+ private com.google.protobuf.LazyStringList names_;
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.util.List<java.lang.String>
+ getNamesList() {
+ return names_;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public int getNamesCount() {
+ return names_.size();
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.lang.String getNames(int index) {
+ return names_.get(index);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNamesBytes(int index) {
+ return names_.getByteString(index);
+ }
+
+ // repeated .org.apache.slider.api.NodeInformationProto nodes = 2;
+ public static final int NODES_FIELD_NUMBER = 2;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> nodes_;
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> getNodesList() {
+ return nodes_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesOrBuilderList() {
+ return nodes_;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public int getNodesCount() {
+ return nodes_.size();
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getNodes(int index) {
+ return nodes_.get(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder getNodesOrBuilder(
+ int index) {
+ return nodes_.get(index);
+ }
+
+ private void initFields() {
+ names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ nodes_ = java.util.Collections.emptyList();
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ for (int i = 0; i < getNodesCount(); i++) {
+ if (!getNodes(i).isInitialized()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ }
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ for (int i = 0; i < names_.size(); i++) {
+ output.writeBytes(1, names_.getByteString(i));
+ }
+ for (int i = 0; i < nodes_.size(); i++) {
+ output.writeMessage(2, nodes_.get(i));
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ {
+ int dataSize = 0;
+ for (int i = 0; i < names_.size(); i++) {
+ dataSize += com.google.protobuf.CodedOutputStream
+ .computeBytesSizeNoTag(names_.getByteString(i));
+ }
+ size += dataSize;
+ size += 1 * getNamesList().size();
+ }
+ for (int i = 0; i < nodes_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, nodes_.get(i));
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ private static final long serialVersionUID = 0L;
+ @java.lang.Override
+ protected java.lang.Object writeReplace()
+ throws java.io.ObjectStreamException {
+ return super.writeReplace();
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto other = (org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) obj;
+
+ boolean result = true;
+ result = result && getNamesList()
+ .equals(other.getNamesList());
+ result = result && getNodesList()
+ .equals(other.getNodesList());
+ result = result &&
+ getUnknownFields().equals(other.getUnknownFields());
+ return result;
+ }
+
+ private int memoizedHashCode = 0;
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptorForType().hashCode();
+ if (getNamesCount() > 0) {
+ hash = (37 * hash) + NAMES_FIELD_NUMBER;
+ hash = (53 * hash) + getNamesList().hashCode();
+ }
+ if (getNodesCount() > 0) {
+ hash = (37 * hash) + NODES_FIELD_NUMBER;
+ hash = (53 * hash) + getNodesList().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodesResponseProto}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements org.apache.slider.api.proto.Messages.GetLiveNodesResponseProtoOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.class, org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.Builder.class);
+ }
+
+ // Construct using org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getNodesFieldBuilder();
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ if (nodesBuilder_ == null) {
+ nodes_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ } else {
+ nodesBuilder_.clear();
+ }
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(buildPartial());
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodesResponseProto_descriptor;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto getDefaultInstanceForType() {
+ return org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance();
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto build() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto buildPartial() {
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto result = new org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto(this);
+ int from_bitField0_ = bitField0_;
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ names_ = new com.google.protobuf.UnmodifiableLazyStringList(
+ names_);
+ bitField0_ = (bitField0_ & ~0x00000001);
+ }
+ result.names_ = names_;
+ if (nodesBuilder_ == null) {
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = java.util.Collections.unmodifiableList(nodes_);
+ bitField0_ = (bitField0_ & ~0x00000002);
+ }
+ result.nodes_ = nodes_;
+ } else {
+ result.nodes_ = nodesBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) {
+ return mergeFrom((org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto other) {
+ if (other == org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto.getDefaultInstance()) return this;
+ if (!other.names_.isEmpty()) {
+ if (names_.isEmpty()) {
+ names_ = other.names_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ ensureNamesIsMutable();
+ names_.addAll(other.names_);
+ }
+ onChanged();
+ }
+ if (nodesBuilder_ == null) {
+ if (!other.nodes_.isEmpty()) {
+ if (nodes_.isEmpty()) {
+ nodes_ = other.nodes_;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ } else {
+ ensureNodesIsMutable();
+ nodes_.addAll(other.nodes_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.nodes_.isEmpty()) {
+ if (nodesBuilder_.isEmpty()) {
+ nodesBuilder_.dispose();
+ nodesBuilder_ = null;
+ nodes_ = other.nodes_;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ nodesBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getNodesFieldBuilder() : null;
+ } else {
+ nodesBuilder_.addAllMessages(other.nodes_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ for (int i = 0; i < getNodesCount(); i++) {
+ if (!getNodes(i).isInitialized()) {
+
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (org.apache.slider.api.proto.Messages.GetLiveNodesResponseProto) e.getUnfinishedMessage();
+ throw e;
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ // repeated string names = 1;
+ private com.google.protobuf.LazyStringList names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ private void ensureNamesIsMutable() {
+ if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+ names_ = new com.google.protobuf.LazyStringArrayList(names_);
+ bitField0_ |= 0x00000001;
+ }
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.util.List<java.lang.String>
+ getNamesList() {
+ return java.util.Collections.unmodifiableList(names_);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public int getNamesCount() {
+ return names_.size();
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public java.lang.String getNames(int index) {
+ return names_.get(index);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNamesBytes(int index) {
+ return names_.getByteString(index);
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder setNames(
+ int index, java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNamesIsMutable();
+ names_.set(index, value);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder addNames(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNamesIsMutable();
+ names_.add(value);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder addAllNames(
+ java.lang.Iterable<java.lang.String> values) {
+ ensureNamesIsMutable();
+ super.addAll(values, names_);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder clearNames() {
+ names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>repeated string names = 1;</code>
+ */
+ public Builder addNamesBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNamesIsMutable();
+ names_.add(value);
+ onChanged();
+ return this;
+ }
+
+ // repeated .org.apache.slider.api.NodeInformationProto nodes = 2;
+ private java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> nodes_ =
+ java.util.Collections.emptyList();
+ private void ensureNodesIsMutable() {
+ if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+ nodes_ = new java.util.ArrayList<org.apache.slider.api.proto.Messages.NodeInformationProto>(nodes_);
+ bitField0_ |= 0x00000002;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeInformationProto, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder> nodesBuilder_;
+
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto> getNodesList() {
+ if (nodesBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(nodes_);
+ } else {
+ return nodesBuilder_.getMessageList();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public int getNodesCount() {
+ if (nodesBuilder_ == null) {
+ return nodes_.size();
+ } else {
+ return nodesBuilder_.getCount();
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto getNodes(int index) {
+ if (nodesBuilder_ == null) {
+ return nodes_.get(index);
+ } else {
+ return nodesBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder setNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto value) {
+ if (nodesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNodesIsMutable();
+ nodes_.set(index, value);
+ onChanged();
+ } else {
+ nodesBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder setNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder builderForValue) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ nodesBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(org.apache.slider.api.proto.Messages.NodeInformationProto value) {
+ if (nodesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNodesIsMutable();
+ nodes_.add(value);
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto value) {
+ if (nodesBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureNodesIsMutable();
+ nodes_.add(index, value);
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.Builder builderForValue) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.add(builderForValue.build());
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addNodes(
+ int index, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder builderForValue) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ nodesBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder addAllNodes(
+ java.lang.Iterable<? extends org.apache.slider.api.proto.Messages.NodeInformationProto> values) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ super.addAll(values, nodes_);
+ onChanged();
+ } else {
+ nodesBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder clearNodes() {
+ if (nodesBuilder_ == null) {
+ nodes_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ onChanged();
+ } else {
+ nodesBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public Builder removeNodes(int index) {
+ if (nodesBuilder_ == null) {
+ ensureNodesIsMutable();
+ nodes_.remove(index);
+ onChanged();
+ } else {
+ nodesBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto.Builder getNodesBuilder(
+ int index) {
+ return getNodesFieldBuilder().getBuilder(index);
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder getNodesOrBuilder(
+ int index) {
+ if (nodesBuilder_ == null) {
+ return nodes_.get(index); } else {
+ return nodesBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<? extends org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesOrBuilderList() {
+ if (nodesBuilder_ != null) {
+ return nodesBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(nodes_);
+ }
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto.Builder addNodesBuilder() {
+ return getNodesFieldBuilder().addBuilder(
+ org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public org.apache.slider.api.proto.Messages.NodeInformationProto.Builder addNodesBuilder(
+ int index) {
+ return getNodesFieldBuilder().addBuilder(
+ index, org.apache.slider.api.proto.Messages.NodeInformationProto.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .org.apache.slider.api.NodeInformationProto nodes = 2;</code>
+ */
+ public java.util.List<org.apache.slider.api.proto.Messages.NodeInformationProto.Builder>
+ getNodesBuilderList() {
+ return getNodesFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeInformationProto, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>
+ getNodesFieldBuilder() {
+ if (nodesBuilder_ == null) {
+ nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.slider.api.proto.Messages.NodeInformationProto, org.apache.slider.api.proto.Messages.NodeInformationProto.Builder, org.apache.slider.api.proto.Messages.NodeInformationProtoOrBuilder>(
+ nodes_,
+ ((bitField0_ & 0x00000002) == 0x00000002),
+ getParentForChildren(),
+ isClean());
+ nodes_ = null;
+ }
+ return nodesBuilder_;
+ }
+
+ // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetLiveNodesResponseProto)
+ }
+
+ static {
+ defaultInstance = new GetLiveNodesResponseProto(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetLiveNodesResponseProto)
+ }
+
+ public interface GetLiveNodeRequestProtoOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required string name = 1;
+ /**
+ * <code>required string name = 1;</code>
+ */
+ boolean hasName();
+ /**
+ * <code>required string name = 1;</code>
+ */
+ java.lang.String getName();
+ /**
+ * <code>required string name = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getNameBytes();
+ }
+ /**
+ * Protobuf type {@code org.apache.slider.api.GetLiveNodeRequestProto}
+ */
+ public static final class GetLiveNodeRequestProto extends
+ com.google.protobuf.GeneratedMessage
+ implements GetLiveNodeRequestProtoOrBuilder {
+ // Use GetLiveNodeRequestProto.newBuilder() to construct.
+ private GetLiveNodeRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+ super(builder);
+ this.unknownFields = builder.getUnknownFields();
+ }
+ private GetLiveNodeRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+ private static final GetLiveNodeRequestProto defaultInstance;
+ public static GetLiveNodeRequestProto getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public GetLiveNodeRequestProto getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ private final com.google.protobuf.UnknownFieldSet unknownFields;
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GetLiveNodeRequestProto(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ initFields();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(input, unknownFields,
+ extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ bitField0_ |= 0x00000001;
+ name_ = input.readBytes();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodeRequestProto_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetLiveNodeRequestProto_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.class, org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto.Builder.class);
+ }
+
+ public static com.google.protobuf.Parser<GetLiveNodeRequestProto> PARSER =
+ new com.google.protobuf.AbstractParser<GetLiveNodeRequestProto>() {
+ public GetLiveNodeRequestProto parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GetLiveNodeRequestProto(input, extensionRegistry);
+ }
+ };
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GetLiveNodeRequestProto> getParserForType() {
+ return PARSER;
+ }
+
+ private int bitField0_;
+ // required string name = 1;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private java.lang.Object name_;
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public boolean hasName() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ if (bs.isValidUtf8()) {
+ name_ = s;
+ }
+ return s;
+ }
+ }
+ /**
+ * <code>required string name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ private void initFields() {
+ name_ = "";
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasName()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ output.writeBytes(1, getNameBytes());
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(1, getNameBytes());
+ }
+ size += getUnknownFields().getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ private static final long serialVersionUID = 0L;
+ @java.lang.Override
+ protected java.lang.Object writeReplace()
+ throws java.io.ObjectStreamException {
+ return super.writeReplace();
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto)) {
+ return super.equals(obj);
+ }
+ org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto other = (org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto) obj;
+
+ boolean result = true;
+ result = result && (hasName() == other.hasName());
+ if (hasName()) {
+ result = result && getName()
+ .equals(other.getName());
+ }
+ result = result &&
+ getUnknownFields().equals(other.getUnknownFields());
+ return result;
+ }
+
+ private int memoizedHashCode = 0;
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptorForType().hashCode();
+ if (hasName()) {
+ hash = (37 * hash) + NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getName().hashCode();
+ }
+ hash = (29 * hash) + getUnknownFields().hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseDelimitedFrom(input, extensionRegistry);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input);
+ }
+ public static org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return PARSER.parseFrom(input, extensionRegistry);
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(org.apache.slider.api.proto.Messages.GetLiveNodeRequestProto prototype) {
+ return newBuilder().mergeFrom(prototype)
<TRUNCATED>
[08/14] incubator-slider git commit: SLIDER-947 build node map from
yarn update reports; serve via REST/IPC. API done;
now trying to make sure RM notifies AM of state, which is being checked via
new metrics
Posted by st...@apache.org.
SLIDER-947 build node map from yarn update reports; serve via REST/IPC.
API done; now trying to make sure RM notifies AM of state, which is being checked via new metrics
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/3aeab9ca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/3aeab9ca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/3aeab9ca
Branch: refs/heads/develop
Commit: 3aeab9ca35e32d927f5fb4b52eb2157ab537f84f
Parents: de040cb
Author: Steve Loughran <st...@apache.org>
Authored: Fri Oct 16 18:53:27 2015 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Fri Oct 16 18:53:27 2015 +0100
----------------------------------------------------------------------
pom.xml | 14 +-
slider-core/pom.xml | 6 +-
.../apache/slider/api/SliderApplicationApi.java | 28 +-
.../slider/api/SliderClusterProtocol.java | 25 +-
.../org/apache/slider/api/proto/Messages.java | 2390 +++++++++++++++++-
.../slider/api/proto/RestTypeMarshalling.java | 90 +-
.../slider/api/proto/SliderClusterAPI.java | 274 +-
.../slider/api/types/NodeEntryInformation.java | 41 +-
.../slider/api/types/NodeInformation.java | 8 +-
.../apache/slider/client/SliderClientAPI.java | 4 +-
.../client/ipc/SliderApplicationIpcClient.java | 22 +-
.../client/ipc/SliderClusterOperations.java | 118 +-
.../rest/SliderApplicationApiRestClient.java | 16 +-
.../server/appmaster/SliderAppMaster.java | 20 +-
.../server/appmaster/management/BoolMetric.java | 88 +
.../server/appmaster/management/LongGauge.java | 92 +
.../appmaster/management/MeterAndCounter.java | 5 +
.../management/MetricsAndMonitoring.java | 24 +-
.../management/RangeLimitedCounter.java | 85 +
.../server/appmaster/management/Timestamp.java | 33 +
.../rpc/SliderClusterProtocolPBImpl.java | 20 +
.../rpc/SliderClusterProtocolProxy.java | 20 +
.../server/appmaster/rpc/SliderIPCService.java | 78 +-
.../slider/server/appmaster/state/AppState.java | 88 +-
.../appmaster/state/ProviderAppState.java | 27 +-
.../server/appmaster/state/RoleHistory.java | 95 +-
.../state/StateAccessForProviders.java | 32 +-
.../server/appmaster/web/WebAppApiImpl.java | 3 +-
.../server/appmaster/web/rest/RestPaths.java | 3 +-
.../ApplicationResouceContentCacheFactory.java | 54 +-
.../rest/application/ApplicationResource.java | 36 +-
.../resources/LiveNodesRefresher.java | 42 +
.../src/main/proto/SliderClusterMessages.proto | 12 +
.../src/main/proto/SliderClusterProtocol.proto | 12 +-
.../rest/AbstractAppApiTestDelegates.groovy | 17 +-
.../agent/rest/IpcApiClientTestDelegates.java | 2 +-
.../agent/rest/LowLevelRestTestDelegates.groovy | 6 +-
.../slider/agent/rest/TestStandaloneREST.groovy | 77 +-
.../TestMockAppStateAppRestIntegration.groovy | 5 +-
.../model/monkey/TestMockMonkey.groovy | 2 +-
.../publisher/TestPublisherRestResources.groovy | 2 +-
.../apache/slider/test/SliderTestUtils.groovy | 53 +-
42 files changed, 3514 insertions(+), 555 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7f8ff5e..3096527 100644
--- a/pom.xml
+++ b/pom.xml
@@ -575,6 +575,12 @@
<dependency>
<groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-hdfs</artifactId>
+ <version>${hadoop.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-client</artifactId>
<version>${hadoop.version}</version>
<exclusions>
@@ -590,7 +596,7 @@
<artifactId>hadoop-yarn-registry</artifactId>
<version>${hadoop.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-server-web-proxy</artifactId>
@@ -1394,6 +1400,12 @@
<version>1.5</version>
</dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/pom.xml
----------------------------------------------------------------------
diff --git a/slider-core/pom.xml b/slider-core/pom.xml
index 70003c7..7e13b92 100644
--- a/slider-core/pom.xml
+++ b/slider-core/pom.xml
@@ -260,6 +260,11 @@
<dependency>
<groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-hdfs</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-client</artifactId>
<scope>compile</scope>
</dependency>
@@ -514,7 +519,6 @@
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
- <version>3.3.1</version>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java b/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
index 7de1915..3668c66 100644
--- a/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
+++ b/slider-core/src/main/java/org/apache/slider/api/SliderApplicationApi.java
@@ -21,6 +21,7 @@ package org.apache.slider.api;
import org.apache.slider.api.types.ApplicationLivenessInformation;
import org.apache.slider.api.types.ComponentInformation;
import org.apache.slider.api.types.ContainerInformation;
+import org.apache.slider.api.types.NodeInformation;
import org.apache.slider.api.types.PingInformation;
import org.apache.slider.core.conf.AggregateConf;
import org.apache.slider.core.conf.ConfTree;
@@ -101,8 +102,7 @@ public interface SliderApplicationApi {
* @return a possibly empty list of serialized containers
* @throws IOException on any failure
*/
- Map<String, ContainerInformation> enumContainers() throws
- IOException;
+ Map<String, ContainerInformation> enumContainers() throws IOException;
/**
* Get a container from the container Id
@@ -110,16 +110,14 @@ public interface SliderApplicationApi {
* @return the container information
* @throws IOException on any failure
*/
- ContainerInformation getContainer(String containerId) throws
- IOException;
+ ContainerInformation getContainer(String containerId) throws IOException;
/**
* List all components into a map of [name:info]
* @return a possibly empty map of components
* @throws IOException on any failure
*/
- Map<String, ComponentInformation> enumComponents() throws
- IOException;
+ Map<String, ComponentInformation> enumComponents() throws IOException;
/**
* Get information about a component
@@ -127,8 +125,22 @@ public interface SliderApplicationApi {
* @return the component details
* @throws IOException on any failure
*/
- ComponentInformation getComponent(String componentName) throws
- IOException;
+ ComponentInformation getComponent(String componentName) throws IOException;
+
+ /**
+ * List all nodes into a map of [name:info]
+ * @return a possibly empty map of nodes
+ * @throws IOException on any failure
+ */
+ Map<String, NodeInformation> getLiveNodes() throws IOException;
+
+ /**
+ * Get information about a node
+ * @param hostname name of the node
+ * @return the node details
+ * @throws IOException on any failure
+ */
+ NodeInformation getLiveNode(String hostname) throws IOException;
/**
* Ping as a GET
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3aeab9ca/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
index 910521e..33fce22 100644
--- a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
+++ b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
@@ -30,8 +30,7 @@ import java.io.IOException;
* Cluster protocol. This can currently act as a versioned IPC
* endpoint or be relayed via protobuf
*/
-@KerberosInfo(
- serverPrincipal = SliderXmlConfKeys.KEY_KERBEROS_PRINCIPAL)
+@KerberosInfo(serverPrincipal = SliderXmlConfKeys.KEY_KERBEROS_PRINCIPAL)
public interface SliderClusterProtocol extends VersionedProtocol {
long versionID = 0x01;
@@ -39,10 +38,8 @@ public interface SliderClusterProtocol extends VersionedProtocol {
* Stop the cluster
*/
-
Messages.StopClusterResponseProto stopCluster(Messages.StopClusterRequestProto request) throws
IOException, YarnException;
-
/**
* Upgrade the application containers
*
@@ -155,20 +152,26 @@ public interface SliderClusterProtocol extends VersionedProtocol {
Messages.GetLiveComponentRequestProto request
) throws IOException;
-
+ Messages.GetLiveNodesResponseProto getLiveNodes(
+ Messages.GetLiveNodesRequestProto request
+ ) throws IOException;
+
+ Messages.NodeInformationProto getLiveNode(
+ Messages.GetLiveNodeRequestProto request
+ ) throws IOException;
+
Messages.WrappedJsonProto getModelDesired(Messages.EmptyPayloadProto request) throws IOException;
-
Messages.WrappedJsonProto getModelDesiredAppconf(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelDesiredResources(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelResolved(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelResolvedAppconf(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getModelResolvedResources(Messages.EmptyPayloadProto request) throws IOException;
-
+
Messages.WrappedJsonProto getLiveResources(Messages.EmptyPayloadProto request) throws IOException;
Messages.GetCertificateStoreResponseProto getClientCertificateStore(Messages.GetCertificateStoreRequestProto request)