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);