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 2014/08/15 17:11:45 UTC
[4/8] git commit: SLIDER-320 rename activeContainers in appState (and
all related methods) to ownedContainers ... differentiates from
livecontainers better
SLIDER-320 rename activeContainers in appState (and all related methods) to ownedContainers ... differentiates from livecontainers better
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/7e2ce276
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/7e2ce276
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/7e2ce276
Branch: refs/heads/develop
Commit: 7e2ce2764153fea9a586d809fcf1ebd4f593255e
Parents: 41e0c5b
Author: Steve Loughran <st...@apache.org>
Authored: Fri Aug 15 14:29:32 2014 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Fri Aug 15 14:29:32 2014 +0100
----------------------------------------------------------------------
.../server/appmaster/SliderAppMaster.java | 2 +-
.../slider/server/appmaster/state/AppState.java | 72 +++++++++++++-------
.../appmaster/state/ProviderAppState.java | 12 ++--
.../state/StateAccessForProviders.java | 6 +-
.../appmaster/web/view/ContainerStatsBlock.java | 2 +-
.../server/appmaster/web/view/IndexBlock.java | 3 +-
6 files changed, 61 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e2ce276/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 acd6870..9a16188 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
@@ -1565,7 +1565,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
throws SliderException {
log.info("containerLostContactWithProvider: container {} lost",
containerId);
- RoleInstance activeContainer = appState.getActiveContainer(containerId);
+ RoleInstance activeContainer = appState.getOwnedContainer(containerId);
if (activeContainer != null) {
executeRMOperations(appState.releaseContainer(containerId));
// ask for more containers if needed
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e2ce276/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 0d2afcc..2f2eadd 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
@@ -163,7 +163,7 @@ public class AppState {
* Hash map of the containers we have. This includes things that have
* been allocated but are not live; it is a superset of the live list
*/
- private final ConcurrentMap<ContainerId, RoleInstance> activeContainers =
+ private final ConcurrentMap<ContainerId, RoleInstance> ownedContainers =
new ConcurrentHashMap<ContainerId, RoleInstance>();
/**
@@ -792,23 +792,49 @@ public class AppState {
}
- public synchronized List<RoleInstance> cloneActiveContainerList() {
- Collection<RoleInstance> values = activeContainers.values();
+ /**
+ * Clone the list of active (==owned) containers
+ * @return the list of role instances representing all owned containers
+ */
+ public synchronized List<RoleInstance> cloneOwnedContainerList() {
+ Collection<RoleInstance> values = ownedContainers.values();
return new ArrayList<RoleInstance>(values);
}
-
- public int getNumActiveContainers() {
- return activeContainers.size();
+ /**
+ * Get the number of active (==owned) containers
+ * @return
+ */
+ public int getNumOwnedContainers() {
+ return ownedContainers.size();
}
+ /**
+ * Look up an active container: any container that the AM has, even
+ * if it is not currently running/live
+ */
+ public RoleInstance getOwnedContainer(ContainerId id) {
+ return ownedContainers.get(id);
+ }
- public RoleInstance getActiveContainer(ContainerId id) {
- return activeContainers.get(id);
+ /**
+ * Remove an owned container
+ * @param id container ID
+ * @return the instance removed
+ */
+ private RoleInstance removeOwnedContainer(ContainerId id) {
+ return ownedContainers.remove(id);
}
-
- private RoleInstance removeActiveContainer(ContainerId id) {
- return activeContainers.remove(id);
+
+ /**
+ * set/update an owned container
+ * @param id container ID
+ * @param instance
+ * @return
+ */
+ private RoleInstance putOwnedContainer(ContainerId id,
+ RoleInstance instance) {
+ return ownedContainers.put(id, instance);
}
/**
@@ -885,7 +911,7 @@ public class AppState {
boolean active) {
List<RoleInstance> nodes = new ArrayList<RoleInstance>();
Collection<RoleInstance> allRoleInstances;
- allRoleInstances = active? activeContainers.values() : liveNodes.values();
+ allRoleInstances = active? ownedContainers.values() : liveNodes.values();
for (RoleInstance node : allRoleInstances) {
if (node.roleId == roleId) {
nodes.add(node);
@@ -943,7 +969,7 @@ public class AppState {
instance.container = container;
instance.createTime = now();
getStartingNodes().put(container.getId(), instance);
- activeContainers.put(container.getId(), instance);
+ putOwnedContainer(container.getId(), instance);
roleHistory.onContainerStartSubmitted(container, instance);
}
@@ -960,7 +986,7 @@ public class AppState {
throws SliderInternalStateException {
ContainerId id = container.getId();
//look up the container
- RoleInstance instance = getActiveContainer(id);
+ RoleInstance instance = getOwnedContainer(id);
if (instance == null) {
throw new SliderInternalStateException(
"No active container with ID " + id);
@@ -1110,7 +1136,7 @@ public class AppState {
@VisibleForTesting
public RoleInstance innerOnNodeManagerContainerStarted(ContainerId containerId) {
incStartedCountainerCount();
- RoleInstance instance = activeContainers.get(containerId);
+ RoleInstance instance = getOwnedContainer(containerId);
if (instance == null) {
//serious problem
throw new YarnRuntimeException("Container not in active containers start "+
@@ -1146,7 +1172,7 @@ public class AppState {
*/
public synchronized void onNodeManagerContainerStartFailed(ContainerId containerId,
Throwable thrown) {
- activeContainers.remove(containerId);
+ removeOwnedContainer(containerId);
incFailedCountainerCount();
incStartFailedCountainerCount();
RoleInstance instance = getStartingNodes().remove(containerId);
@@ -1246,7 +1272,7 @@ public class AppState {
} else {
//a container has failed
result.containerFailed = true;
- roleInstance = activeContainers.remove(containerId);
+ roleInstance = removeOwnedContainer(containerId);
if (roleInstance != null) {
//it was active, move it to failed
incFailedCountainerCount();
@@ -1320,14 +1346,14 @@ public class AppState {
}
// and the active node list if present
- removeActiveContainer(containerId);
+ removeOwnedContainer(containerId);
// finally, verify the node doesn't exist any more
assert !containersBeingReleased.containsKey(
containerId) : "container still in release queue";
assert !getLiveNodes().containsKey(
containerId) : " container still in live nodes";
- assert getActiveContainer(containerId) ==
+ assert getOwnedContainer(containerId) ==
null : "Container still in active container list";
return result;
@@ -1623,7 +1649,7 @@ public class AppState {
public List<AbstractRMOperation> releaseContainer(ContainerId containerId)
throws SliderInternalStateException {
List<AbstractRMOperation> operations = new ArrayList<AbstractRMOperation>();
- List<RoleInstance> activeRoleInstances = cloneActiveContainerList();
+ List<RoleInstance> activeRoleInstances = cloneOwnedContainerList();
for (RoleInstance role : activeRoleInstances) {
if (role.container.getId().equals(containerId)) {
containerReleaseSubmitted(role.container);
@@ -1645,7 +1671,7 @@ public class AppState {
* that can be released.
*/
private RoleInstance findRoleInstanceOnHost(NodeInstance node, int roleId) {
- Collection<RoleInstance> targets = cloneActiveContainerList();
+ Collection<RoleInstance> targets = cloneOwnedContainerList();
String hostname = node.hostname;
for (RoleInstance ri : targets) {
if (hostname.equals(RoleHistoryUtils.hostnameOf(ri.container))
@@ -1663,7 +1689,7 @@ public class AppState {
*/
public synchronized List<AbstractRMOperation> releaseAllContainers() {
- Collection<RoleInstance> targets = cloneActiveContainerList();
+ Collection<RoleInstance> targets = cloneOwnedContainerList();
log.info("Releasing {} containers", targets.size());
List<AbstractRMOperation> operations =
new ArrayList<AbstractRMOperation>(targets.size());
@@ -1817,7 +1843,7 @@ public class AppState {
instance.container = container;
instance.createTime = now();
instance.state = ClusterDescription.STATE_LIVE;
- activeContainers.put(cid, instance);
+ putOwnedContainer(cid, instance);
//role history gets told
roleHistory.onContainerAssigned(container);
// pretend the container has just had its start actions submitted
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e2ce276/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 a5b36d4..e7384c8 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
@@ -164,18 +164,18 @@ public class ProviderAppState implements StateAccessForProviders {
}
@Override
- public List<RoleInstance> cloneActiveContainerList() {
- return appState.cloneActiveContainerList();
+ public List<RoleInstance> cloneOwnedContainerList() {
+ return appState.cloneOwnedContainerList();
}
@Override
- public int getNumActiveContainers() {
- return appState.getNumActiveContainers();
+ public int getNumOwnedContainers() {
+ return appState.getNumOwnedContainers();
}
@Override
- public RoleInstance getActiveContainer(ContainerId id) {
- return appState.getActiveContainer(id);
+ public RoleInstance getOwnedContainer(ContainerId id) {
+ return appState.getOwnedContainer(id);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e2ce276/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 acba8cc..b236dfc 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
@@ -144,20 +144,20 @@ public interface StateAccessForProviders {
* @return the active containers at the time
* the call was made
*/
- List<RoleInstance> cloneActiveContainerList();
+ List<RoleInstance> cloneOwnedContainerList();
/**
* Get the number of active containers
* @return the number of active containers the time the call was made
*/
- int getNumActiveContainers();
+ int getNumOwnedContainers();
/**
* Get any active container with the given ID
* @param id container Id
* @return the active container or null if it is not found
*/
- RoleInstance getActiveContainer(ContainerId id);
+ RoleInstance getOwnedContainer(ContainerId id);
/**
* Create a clone of the list of live cluster nodes.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e2ce276/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.java
index 5645e0e..95f0417 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/ContainerStatsBlock.java
@@ -96,7 +96,7 @@ public class ContainerStatsBlock extends HtmlBlock {
protected void render(Block html) {
// TODO Probably better to just get a copy of this list for us to avoid the repeated synchronization?
// does this change if we have 50 node, 100node, 500 node clusters?
- final Map<String,RoleInstance> containerInstances = getContainerInstances(slider.getAppState().cloneActiveContainerList());
+ final Map<String,RoleInstance> containerInstances = getContainerInstances(slider.getAppState().cloneOwnedContainerList());
for (Entry<String,RoleStatus> entry : slider.getRoleStatusByName().entrySet()) {
final String name = entry.getKey();
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7e2ce276/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
index 90a3ee7..54bdb09 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/web/view/IndexBlock.java
@@ -30,7 +30,6 @@ import org.apache.slider.server.appmaster.web.WebAppApi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.net.URL;
import java.util.Map;
import java.util.Map.Entry;
@@ -63,7 +62,7 @@ public class IndexBlock extends HtmlBlock {
UL<DIV<Hamlet>> ul = div.ul();
- ul.li("Total number of containers for cluster: " + appState.getNumActiveContainers());
+ ul.li("Total number of containers for cluster: " + appState.getNumOwnedContainers());
ul.li("Cluster created: " + getInfoAvoidingNulls(StatusKeys.INFO_CREATE_TIME_HUMAN));
ul.li("Cluster last flexed: " + getInfoAvoidingNulls(StatusKeys.INFO_FLEX_TIME_HUMAN));
ul.li("Cluster running since: " + getInfoAvoidingNulls(StatusKeys.INFO_LIVE_TIME_HUMAN));