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 05:21:24 UTC

svn commit: r1131550 - in /incubator/mesos/trunk: include/nexus_sched.hpp src/Makefile.in src/nexus_sched.cpp

Author: benh
Date: Sun Jun  5 03:21:24 2011
New Revision: 1131550

URL: http://svn.apache.org/viewvc?rev=1131550&view=rev
Log:
Some code cleanup in nexus_sched implementation:
- Renamed some variables and functions that had different names back
  when SchedulerDriver was called Scheduler.
- Use newly added Lock class.

Modified:
    incubator/mesos/trunk/include/nexus_sched.hpp
    incubator/mesos/trunk/src/Makefile.in
    incubator/mesos/trunk/src/nexus_sched.cpp

Modified: incubator/mesos/trunk/include/nexus_sched.hpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/include/nexus_sched.hpp?rev=1131550&r1=1131549&r2=1131550&view=diff
==============================================================================
--- incubator/mesos/trunk/include/nexus_sched.hpp (original)
+++ incubator/mesos/trunk/include/nexus_sched.hpp Sun Jun  5 03:21:24 2011
@@ -9,7 +9,6 @@
 
 namespace nexus {
 
-
 class SchedulerDriver;
 
 namespace internal { class SchedulerProcess; }
@@ -48,7 +47,6 @@ public:
  * framework to Nexus (such as replies to offers). Concrete implementations
  * of SchedulerDriver will take a Scheduler as a parameter in order to make
  * callbacks into it on various events.
- * TODO: Improve this comment
  */
 class SchedulerDriver
 {
@@ -73,7 +71,8 @@ public:
 
 
 /**
- * Concrete implementation of SchedulerDriver that communicates with a Nexus master.
+ * Concrete implementation of SchedulerDriver that communicates with
+ * a Nexus master.
  */
 class NexusSchedulerDriver : public SchedulerDriver
 {

Modified: incubator/mesos/trunk/src/Makefile.in
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/Makefile.in?rev=1131550&r1=1131549&r2=1131550&view=diff
==============================================================================
--- incubator/mesos/trunk/src/Makefile.in (original)
+++ incubator/mesos/trunk/src/Makefile.in Sun Jun  5 03:21:24 2011
@@ -24,8 +24,6 @@ LIBEV = third_party/libprocess/third_par
 GLOG = third_party/glog-0.3.0
 GTEST = third_party/gtest-1.4.0-patched
 
-ZOOKEEPER = third_party/zookeeper-3.2.2/src/c
-
 # Ensure that we get better debugging info.
 CFLAGS += -g
 CXXFLAGS += -g
@@ -50,13 +48,11 @@ LDFLAGS += -Lthird_party/libprocess
 # Add libev to LDFLAGS.
 LDFLAGS += -L$(LIBEV)/.libs
 
-# Add glog and gtest and zookeeper to include and lib paths
+# Add glog and gtest to include and lib paths
 CXXFLAGS += -I$(GLOG)/src
 CXXFLAGS += -I$(GTEST)/include
-CXXFLAGS += -I$(ZOOKEEPER)/include -I$(ZOOKEEPER)/generated -DTHREADED
 LDFLAGS += -L$(GLOG)/.libs
 LDFLAGS += -L$(GTEST)/lib/.libs
-LDFLAGS += -L$(ZOOKEEPER)/.libs
 
 # Add dependency tracking to CFLAGS, CXXFLAGS.
 CFLAGS += -MMD -MP
@@ -71,7 +67,7 @@ CFLAGS += -DBUILD_USER="\"$$USER\""
 CXXFLAGS += -DBUILD_USER="\"$$USER\""
 
 # Add libev, libprocess, pthread, and dl to LIBS.
-LIBS += -lglog -lgtest -lprocess -lev -lpthread -ldl -lzookeeper_mt
+LIBS += -lglog -lgtest -lprocess -lev -lpthread -ldl
 
 NEXUS_EXES = nexus-master nexus-slave nexus-local nexus-launcher alltests \
 	     test-framework test-executor cpp-test-framework cpp-test-executor \
@@ -92,7 +88,7 @@ NEXUS_LIBS = $(SCHED_LIB) $(EXEC_LIB) $(
 MASTER_OBJ = master.o allocator_factory.o simple_allocator.o
 SLAVE_OBJ = slave.o launcher.o isolation_module_factory.o \
 	    process_based_isolation_module.o
-COMMON_OBJ = fatal.o hash_pid.o messages.o getleader.o
+COMMON_OBJ = fatal.o hash_pid.o lock.o messages.o
 EXEC_LIB_OBJ = nexus_exec.o
 SCHED_LIB_OBJ = nexus_sched.o nexus_local.o params.o
 TEST_OBJ = tests/main.o tests/test_master.o tests/test_resources.o
@@ -133,7 +129,7 @@ $(NEXUS_LIBS): $(COMMON_OBJ) third_party
 $(NEXUS_EXES): $(COMMON_OBJ) third_party/libprocess/libprocess.a
 
 $(SCHED_LIB): $(SCHED_LIB_OBJ) $(MASTER_OBJ) $(SLAVE_OBJ) $(COMMON_OBJ)
-	$(AR) rcs $@ $^ third_party/libprocess/libprocess.a $(GLOG)/.libs/libglog.a $(LIBEV)/.libs/libev.a $(ZOOKEEPER)/.libs/libzookeeper_mt.a
+	$(AR) rcs $@ $^ third_party/libprocess/libprocess.a $(GLOG)/.libs/libglog.a $(LIBEV)/.libs/libev.a
 
 $(EXEC_LIB): $(EXEC_LIB_OBJ) $(COMMON_OBJ)
 	$(AR) rcs $@ $^
@@ -252,7 +248,6 @@ third_party:
 	$(MAKE) -C third_party/libprocess
 	$(MAKE) -C $(GLOG)
 	$(MAKE) -C $(GTEST)
-	$(MAKE) -C $(ZOOKEEPER)
 
 all: third_party $(NEXUS_LIBS) $(NEXUS_EXES) java python ruby
 
@@ -260,7 +255,6 @@ clean:
 	$(MAKE) -C third_party/libprocess clean
 	$(MAKE) -C $(GLOG) clean
 	$(MAKE) -C $(GTEST) clean
-	$(MAKE) -C $(ZOOKEEPER) clean
 	rm -f $(patsubst %.o, %.d, $(ALL_OBJ))
 	rm -f $(ALL_OBJ)
 	rm -f $(NEXUS_LIBS)

Modified: incubator/mesos/trunk/src/nexus_sched.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/nexus_sched.cpp?rev=1131550&r1=1131549&r2=1131550&view=diff
==============================================================================
--- incubator/mesos/trunk/src/nexus_sched.cpp (original)
+++ incubator/mesos/trunk/src/nexus_sched.cpp Sun Jun  5 03:21:24 2011
@@ -22,6 +22,7 @@
 
 #include "fatal.hpp"
 #include "hash_pid.hpp"
+#include "lock.hpp"
 #include "messages.hpp"
 #include "nexus_local.hpp"
 #include "nexus_sched.hpp"
@@ -185,18 +186,6 @@ protected:
 
 }} /* namespace nexus { namespace internal { */
 
-namespace {
-
-// RAII class for locking mutexes
-struct Lock
-{
-  pthread_mutex_t* m;
-  Lock(pthread_mutex_t* _m): m(_m) { pthread_mutex_lock(m); }
-  ~Lock() { pthread_mutex_unlock(m); }
-};
-
-} /* namespace { */
-
 
 /*
  * Implementation of C++ API.
@@ -461,7 +450,7 @@ public:
   string frameworkName;
   ExecutorInfo execInfo;
   nexus_sched* sched;
-  SchedulerDriver* scheduler;
+  SchedulerDriver* driver; // Set externally after object is created
 
   CScheduler(string fwName,
                       string execUri,
@@ -470,7 +459,7 @@ public:
     : frameworkName(fwName),
       execInfo(execUri, execArg),
       sched(_sched),
-      scheduler(NULL) {}
+      driver(NULL) {}
 
   virtual ~CScheduler() {}
 
@@ -560,46 +549,46 @@ public:
  * locking mechanism that abstracts away if we are using pthreads or
  * libprocess.
  */
-unordered_map<nexus_sched* , CScheduler*> schedulers;
+unordered_map<nexus_sched* , CScheduler*> c_schedulers;
 
 
-CScheduler* lookup(nexus_sched* sched)
+CScheduler* lookupCScheduler(nexus_sched* sched)
 {
   assert(sched != NULL);
 
-  // TODO(benh): Protect 'schedulers' (see above).
+  // TODO(benh): Protect 'c_schedulers' (see above).
   unordered_map<nexus_sched*, CScheduler*>::iterator it =
-    schedulers.find(sched);
+    c_schedulers.find(sched);
 
-  CScheduler* csi = it == schedulers.end() ? NULL : it->second;
+  CScheduler* cs = it == c_schedulers.end() ? NULL : it->second;
 
-  if (csi == NULL) {
+  if (cs == NULL) {
     string fw_name = sched->framework_name;
     string exec_name = sched->executor_name;
     string init_arg((char*) sched->init_arg, sched->init_arg_len);
-    csi = new CScheduler(fw_name, exec_name, init_arg, sched);
-    schedulers[sched] = csi;
+    cs = new CScheduler(fw_name, exec_name, init_arg, sched);
+    c_schedulers[sched] = cs;
   }
 
-  assert(csi != NULL);
+  assert(cs != NULL);
 
-  return csi;
+  return cs;
 }
 
 
-void remove(nexus_sched* sched)
+void removeCScheduler(nexus_sched* sched)
 {
-  // TODO(benh): Protect 'schedulers' (see above).
+  // TODO(benh): Protect 'c_schedulers' (see above).
   unordered_map<nexus_sched*, CScheduler*>::iterator it =
-    schedulers.find(sched);
+    c_schedulers.find(sched);
 
-  CScheduler* csi = it == schedulers.end() ? NULL : it->second;
+  CScheduler* cs = it == c_schedulers.end() ? NULL : it->second;
 
-  if (csi != NULL) {
-    schedulers.erase(sched);
-    if (csi->scheduler != NULL)
-      delete csi->scheduler;
-    delete csi;
+  if (cs != NULL) {
+    c_schedulers.erase(sched);
+    if (cs->driver != NULL)
+      delete cs->driver;
+    delete cs;
   }
 }
 
@@ -632,7 +621,7 @@ int nexus_sched_destroy(struct nexus_sch
     return -1;
   }
 
-  remove(sched);
+  removeCScheduler(sched);
 
   return 0;
 }
@@ -645,15 +634,15 @@ int nexus_sched_reg(struct nexus_sched* 
     return -1;
   }
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler != NULL) {
+  if (cs->driver != NULL) {
     errno = EINVAL;
     return -1;
   }
 
-  csi->scheduler = new NexusSchedulerDriver(csi, master);
-  csi->scheduler->start();
+  cs->driver = new NexusSchedulerDriver(cs, master);
+  cs->driver->start();
 
   return 0;
 }
@@ -666,14 +655,14 @@ int nexus_sched_unreg(struct nexus_sched
     return -1;
   }
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler == NULL) {
+  if (cs->driver == NULL) {
     errno = EINVAL;
     return -1;
   }
 
-  csi->scheduler->stop();
+  cs->driver->stop();
 
   return 0;
 }
@@ -690,14 +679,14 @@ int nexus_sched_send_message(struct nexu
   FrameworkMessage message(string(msg->sid), msg->tid,
                            string((char*) msg->data, msg->data_len));
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler == NULL) {
+  if (cs->driver == NULL) {
     errno = EINVAL;
     return -1;
   }
 
-  csi->scheduler->sendFrameworkMessage(message);
+  cs->driver->sendFrameworkMessage(message);
 
   return 0;
 }
@@ -710,14 +699,14 @@ int nexus_sched_kill_task(struct nexus_s
     return -1;
   }
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler == NULL) {
+  if (cs->driver == NULL) {
     errno = EINVAL;
     return -1;
   }
 
-  csi->scheduler->killTask(tid);
+  cs->driver->killTask(tid);
 
   return 0;
 }
@@ -757,15 +746,15 @@ int nexus_sched_reply_to_offer(struct ne
                                        taskArg);
   }
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler == NULL) {
+  if (cs->driver == NULL) {
     errno = EINVAL;
     return -1;
   }
 
   Params paramsObj(params);
-  csi->scheduler->replyToOffer(oid, wrapped_tasks, paramsObj.getMap());
+  cs->driver->replyToOffer(oid, wrapped_tasks, paramsObj.getMap());
 
   return 0;
 }
@@ -778,14 +767,14 @@ int nexus_sched_revive_offers(struct nex
     return -1;
   }
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler == NULL) {
+  if (cs->driver == NULL) {
     errno = EINVAL;
     return -1;
   }
 
-  csi->scheduler->reviveOffers();
+  cs->driver->reviveOffers();
 
   return 0;
 }
@@ -798,14 +787,14 @@ int nexus_sched_join(struct nexus_sched*
     return -1;
   }
 
-  CScheduler* csi = lookup(sched);
+  CScheduler* cs = lookupCScheduler(sched);
 
-  if (csi->scheduler == NULL) {
+  if (cs->driver == NULL) {
     errno = EINVAL;
     return -1;
   }
 
-  csi->scheduler->join();
+  cs->driver->join();
 
   return 0;
 }