提交 d23d461c 编写于 作者: J João Sousa

Put back overseeing of pending replies by the control flow mechanism

上级 92eff4e0
无法预览此类型文件
...@@ -272,6 +272,7 @@ public class ClientsManager { ...@@ -272,6 +272,7 @@ public class ClientsManager {
int pendingReqs = countPendingRequests(); int pendingReqs = countPendingRequests();
int pendingDecs = dt.getPendingDecisions(); int pendingDecs = dt.getPendingDecisions();
int pendingReps = dt.getReplyManager().getPendingReplies();
long usedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); long usedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
//control flow mechanism //control flow mechanism
...@@ -279,6 +280,7 @@ public class ClientsManager { ...@@ -279,6 +280,7 @@ public class ClientsManager {
if ((this.controller.getStaticConf().getMaxPendigReqs() > 0 && pendingReqs >= this.controller.getStaticConf().getMaxPendigReqs()) || if ((this.controller.getStaticConf().getMaxPendigReqs() > 0 && pendingReqs >= this.controller.getStaticConf().getMaxPendigReqs()) ||
(this.controller.getStaticConf().getMaxPendigDecs() > 0 && pendingDecs >= this.controller.getStaticConf().getMaxPendigDecs()) || (this.controller.getStaticConf().getMaxPendigDecs() > 0 && pendingDecs >= this.controller.getStaticConf().getMaxPendigDecs()) ||
(this.controller.getStaticConf().getMaxPendigReps() > 0 && pendingDecs >= this.controller.getStaticConf().getMaxPendigReps()) ||
(this.controller.getStaticConf().getMaxUsedMemory() > 0 && usedMemory >= this.controller.getStaticConf().getMaxUsedMemory())) (this.controller.getStaticConf().getMaxUsedMemory() > 0 && usedMemory >= this.controller.getStaticConf().getMaxUsedMemory()))
{ {
...@@ -286,6 +288,7 @@ public class ClientsManager { ...@@ -286,6 +288,7 @@ public class ClientsManager {
} else if (pendingReqs <= this.controller.getStaticConf().getPreferredPendigReqs() && } else if (pendingReqs <= this.controller.getStaticConf().getPreferredPendigReqs() &&
pendingDecs <= this.controller.getStaticConf().getPreferredPendigDecs() && pendingDecs <= this.controller.getStaticConf().getPreferredPendigDecs() &&
pendingReps <= this.controller.getStaticConf().getPreferredPendigReps() &&
usedMemory <= this.controller.getStaticConf().getPreferredUsedMemory()) usedMemory <= this.controller.getStaticConf().getPreferredUsedMemory())
{ {
...@@ -298,11 +301,13 @@ public class ClientsManager { ...@@ -298,11 +301,13 @@ public class ClientsManager {
usedMemory > this.controller.getStaticConf().getPreferredUsedMemory()) Runtime.getRuntime().gc(); // force garbage collection usedMemory > this.controller.getStaticConf().getPreferredUsedMemory()) Runtime.getRuntime().gc(); // force garbage collection
logger.warn("Discarding message due to control flow mechanism\n" + logger.warn("Discarding message due to control flow mechanism\n" +
"\tMaximum requests are {}, current requests at {}\n" + "\tMaximum requests are {}, pending requests at {}\n" +
"\tMaximum decisions are {}, current decisions at {}\n" + "\tMaximum decisions are {}, pending decisions at {}\n" +
"\tMaximum replies are {}, pending replies at {}\n" +
"\tMaximum memory is {} current memory at {}\n", "\tMaximum memory is {} current memory at {}\n",
this.controller.getStaticConf().getMaxPendigReqs(), pendingReqs, this.controller.getStaticConf().getMaxPendigReqs(), pendingReqs,
this.controller.getStaticConf().getMaxPendigDecs(), pendingDecs, this.controller.getStaticConf().getMaxPendigDecs(), pendingDecs,
this.controller.getStaticConf().getMaxPendigReqs(), pendingReps,
TOMUtil.humanReadableByteCount(this.controller.getStaticConf().getMaxUsedMemory(), false), TOMUtil.humanReadableByteCount(this.controller.getStaticConf().getMaxUsedMemory(), false),
TOMUtil.humanReadableByteCount(usedMemory, false)); TOMUtil.humanReadableByteCount(usedMemory, false));
......
...@@ -43,6 +43,8 @@ public class TOMConfiguration extends Configuration { ...@@ -43,6 +43,8 @@ public class TOMConfiguration extends Configuration {
protected int preferredPendingReqs; protected int preferredPendingReqs;
protected int maxPendingDecs; protected int maxPendingDecs;
protected int preferredPendingDecs; protected int preferredPendingDecs;
protected int maxPendingReps;
protected int preferredPendingReps;
protected int maxUsedMemory; protected int maxUsedMemory;
protected int preferredUsedMemory; protected int preferredUsedMemory;
protected int numberOfNonces; protected int numberOfNonces;
...@@ -213,6 +215,24 @@ public class TOMConfiguration extends Configuration { ...@@ -213,6 +215,24 @@ public class TOMConfiguration extends Configuration {
} }
s = (String) configs.remove("system.controlflow.maxpendingreps");
if (s == null) {
maxPendingReps = 10000;
} else {
maxPendingReps = Integer.parseInt(s);
if (maxPendingReps <= 0) {
maxPendingReps = -1;
}
}
s = (String) configs.remove("system.controlflow.preferredpendingreps");
if (s == null) {
preferredPendingReps = 1000;
} else {
preferredPendingReps = Integer.parseInt(s);
}
s = (String) configs.remove("system.controlflow.maxusedmemory"); s = (String) configs.remove("system.controlflow.maxusedmemory");
if (s == null) { if (s == null) {
maxUsedMemory = 100000; maxUsedMemory = 100000;
...@@ -505,6 +525,15 @@ public class TOMConfiguration extends Configuration { ...@@ -505,6 +525,15 @@ public class TOMConfiguration extends Configuration {
return preferredPendingDecs; return preferredPendingDecs;
} }
public int getMaxPendigReps() {
return maxPendingReps;
}
public int getPreferredPendigReps() {
return preferredPendingReps;
}
public int getMaxUsedMemory() { public int getMaxUsedMemory() {
return maxUsedMemory; return maxUsedMemory;
} }
......
...@@ -514,8 +514,8 @@ public class ServiceReplica { ...@@ -514,8 +514,8 @@ public class ServiceReplica {
return id; return id;
} }
public int getPendingReplies() { public ReplyManager getReplyManager() {
return repMan.getPendingReplies(); return repMan;
} }
} }
...@@ -81,6 +81,9 @@ public final class DeliveryThread extends Thread { ...@@ -81,6 +81,9 @@ public final class DeliveryThread extends Thread {
return decided.size() + currentDecisions; return decided.size() + currentDecisions;
} }
public ReplyManager getReplyManager() {
return receiver.getReplyManager();
}
/** /**
* Invoked by the TOM layer, to deliver a decision * Invoked by the TOM layer, to deliver a decision
* @param dec Decision established from the consensus * @param dec Decision established from the consensus
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册