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