You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2011/06/05 08:42:54 UTC
svn commit: r1131968 - in /incubator/mesos/trunk/src: master.cpp
third_party/libprocess/process.cpp
Author: benh
Date: Sun Jun 5 06:42:54 2011
New Revision: 1131968
URL: http://svn.apache.org/viewvc?rev=1131968&view=rev
Log:
Fixed an assertion in libprocess as well as recognized a possible bug. Also changed the ordering of some relatively new code in master.
Modified:
incubator/mesos/trunk/src/master.cpp
incubator/mesos/trunk/src/third_party/libprocess/process.cpp
Modified: incubator/mesos/trunk/src/master.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/master.cpp?rev=1131968&r1=1131967&r2=1131968&view=diff
==============================================================================
--- incubator/mesos/trunk/src/master.cpp (original)
+++ incubator/mesos/trunk/src/master.cpp Sun Jun 5 06:42:54 2011
@@ -453,6 +453,15 @@ void Master::operator () ()
<< "generating a new id for it.";
}
+ LOG(INFO) << "Re-registering " << slave << " at " << slave->pid;
+ slaves[slave->id] = slave;
+ pidToSid[slave->pid] = slave->id;
+ link(slave->pid);
+ send(slave->pid,
+ pack<M2S_REREGISTER_REPLY>(slave->id, HEARTBEAT_INTERVAL));
+
+ allocator->slaveAdded(slave);
+
foreach (const Task &t, tasks) {
Task *task = new Task(t);
slave->addTask(task);
@@ -469,14 +478,7 @@ void Master::operator () ()
// TODO(benh|alig): We should put a timeout on how long we keep
// tasks running that never have frameworks reregister that
// claim them.
-
- LOG(INFO) << "Re-registering " << slave << " at " << slave->pid;
- slaves[slave->id] = slave;
- pidToSid[slave->pid] = slave->id;
- link(slave->pid);
- send(slave->pid,
- pack<M2S_REREGISTER_REPLY>(slave->id, HEARTBEAT_INTERVAL));
- allocator->slaveAdded(slave);
+
break;
}
Modified: incubator/mesos/trunk/src/third_party/libprocess/process.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/third_party/libprocess/process.cpp?rev=1131968&r1=1131967&r2=1131968&view=diff
==============================================================================
--- incubator/mesos/trunk/src/third_party/libprocess/process.cpp (original)
+++ incubator/mesos/trunk/src/third_party/libprocess/process.cpp Sun Jun 5 06:42:54 2011
@@ -1436,9 +1436,9 @@ void LinkManager::send(struct msg *msg)
if ((it = persists.find(n)) != persists.end() ||
(it = temps.find(n)) != temps.end()) {
int s = it->second;
- if (outgoing.find(s) == outgoing.end()) {
- assert(persists.find(n) != persists.end());
- assert(temps.find(n) == temps.end());
+ if (outgoing.count(s) == 0) {
+ assert(persists.count(n) != 0);
+ assert(temps.count(n) == 0 || temps[n] != s);
/* Initialize the outgoing queue. */
outgoing[s];
@@ -1586,9 +1586,16 @@ void LinkManager::closed(int s)
synchronized(this) {
if (sockets.count(s) > 0) {
const node &n = sockets[s];
- exited(n);
- persists.erase(n);
- temps.erase(n);
+
+ // Don't bother invoking exited unless socket was from persists.
+ if (persists.count(n) > 0 && persists[n] == s) {
+ persists.erase(n);
+ exited(n);
+ } else {
+ assert(temps.count(n) > 0 && temps[n] == s);
+ temps.erase(n);
+ }
+
sockets.erase(s);
outgoing.erase(s);
close(s);