You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by el...@apache.org on 2015/01/29 18:23:51 UTC
[28/28] incubator-slider git commit: SLIDER-743 add the counters and
resetting feature to the Nodes,
but no use of the outcome in choosing placements
SLIDER-743 add the counters and resetting feature to the Nodes, but no use of the outcome in choosing placements
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/3105ba9f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/3105ba9f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/3105ba9f
Branch: refs/heads/develop
Commit: 3105ba9f315059c5e957645625666975014ad4e5
Parents: 618cdc4
Author: Steve Loughran <st...@apache.org>
Authored: Wed Jan 28 21:38:51 2015 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Wed Jan 28 21:38:51 2015 +0000
----------------------------------------------------------------------
.../slider/server/appmaster/state/AppState.java | 4 ++-
.../server/appmaster/state/NodeEntry.java | 26 +++++++++++++++++---
.../server/appmaster/state/NodeInstance.java | 10 ++++++++
.../slider/server/appmaster/state/NodeMap.java | 11 +++++++++
.../server/appmaster/state/RoleHistory.java | 21 +++++++++++++---
5 files changed, 63 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3105ba9f/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 4b37e14..95a7ca5 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
@@ -1711,9 +1711,11 @@ public class AppState {
public void resetFailureCounts() {
for (RoleStatus roleStatus : getRoleStatusMap().values()) {
int failed = roleStatus.resetFailed();
- log.debug("Resetting failure count of {}; was {}", roleStatus.getName(),
+ log.info("Resetting failure count of {}; was {}",
+ roleStatus.getName(),
failed);
}
+ roleHistory.resetFailedRecently();
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3105ba9f/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 ebddaf9..c2e203a 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
@@ -53,6 +53,11 @@ public class NodeEntry {
private int startFailed;
private int failed;
/**
+ * Counter of "failed recently" events. These are all failures
+ * which have happened since it was last reset.
+ */
+ private int failedRecently;
+ /**
* Number of live nodes.
*/
private int live;
@@ -104,7 +109,7 @@ public class NodeEntry {
live = v;
}
- private void incLive() {
+ private synchronized void incLive() {
++live;
}
@@ -132,6 +137,7 @@ public class NodeEntry {
public synchronized boolean onStartFailed() {
decStarting();
++startFailed;
+ ++failedRecently;
return containerCompleted(false);
}
@@ -183,6 +189,7 @@ public class NodeEntry {
releasing = RoleHistoryUtils.decToFloor(releasing);
} else {
++failed;
+ ++failedRecently;
}
decLive();
return isAvailable();
@@ -199,7 +206,7 @@ public class NodeEntry {
this.lastUsed = lastUsed;
}
- public int getStartFailed() {
+ public synchronized int getStartFailed() {
return startFailed;
}
@@ -207,6 +214,17 @@ public class NodeEntry {
return failed;
}
+ public synchronized int getFailedRecently() {
+ return failedRecently;
+ }
+
+ /**
+ * Reset the failed recently count.
+ */
+ public void resetFailedRecently() {
+ failedRecently = 0;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("NodeEntry{");
@@ -214,10 +232,10 @@ public class NodeEntry {
sb.append(", requested=").append(requested);
sb.append(", starting=").append(starting);
sb.append(", live=").append(live);
- sb.append(", failed=").append(failed);
- sb.append(", startFailed=").append(startFailed);
sb.append(", releasing=").append(releasing);
sb.append(", lastUsed=").append(lastUsed);
+ sb.append(", failedRecently=").append(failedRecently);
+ sb.append(", startFailed=").append(startFailed);
sb.append('}');
return sb.toString();
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3105ba9f/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 bc79b71..231865e 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
@@ -132,6 +132,16 @@ public class NodeInstance {
return active;
}
+
+ /**
+ * run through each entry resetting the failure count
+ */
+ public synchronized void resetFailedRecently() {
+ for (NodeEntry entry : nodeEntries) {
+ entry.resetFailedRecently();
+ }
+ }
+
@Override
public String toString() {
return hostname;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3105ba9f/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 570c194..fe40086 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
@@ -102,6 +102,17 @@ public class NodeMap extends HashMap<String, NodeInstance> {
}
return purged;
}
+
+
+ /**
+ * reset the failed recently counters
+ */
+ public void resetFailedRecently() {
+ for (Map.Entry<String, NodeInstance> entry : entrySet()) {
+ NodeInstance ni = entry.getValue();
+ ni.resetFailedRecently();
+ }
+ }
/**
* Clone point
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3105ba9f/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 ce2ab0a..605a4f8 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
@@ -310,6 +310,14 @@ public class RoleHistory {
}
/**
+ * reset the failed recently counters
+ */
+ public synchronized void resetFailedRecently() {
+ log.info("Resetting failure history");
+ nodemap.resetFailedRecently();
+ }
+
+ /**
* Get the path used for history files
* @return the directory used for history files
*/
@@ -480,18 +488,23 @@ public class RoleHistory {
}
int roleKey = role.getKey();
NodeInstance nodeInstance = null;
-
+ // get the list of possible targets
List<NodeInstance> targets = getNodesForRoleId(roleKey);
- int cnt = targets == null ? 0 : targets.size();
+ if (targets == null) {
+ // add an empty list here for ease downstream
+ targets = new ArrayList<NodeInstance>(0);
+ }
+ int cnt = targets.size();
log.debug("There are {} node(s) to consider for {}", cnt, role.getName());
- while (targets != null && !targets.isEmpty() && nodeInstance == null) {
+ // spin until there's a candidate
+ while (!targets.isEmpty() && nodeInstance == null) {
NodeInstance head = targets.remove(0);
if (head.getActiveRoleInstances(roleKey) == 0) {
nodeInstance = head;
}
}
if (nodeInstance == null) {
- log.debug("No historical node found for {}", role.getName());
+ log.info("No historical node found for {}", role.getName());
}
return nodeInstance;
}