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:24:16 UTC
svn commit: r1131570 - in /incubator/mesos/trunk/src: leader_detector.cpp
leader_detector.hpp master.cpp nexus_sched.cpp slave.cpp
Author: benh
Date: Sun Jun 5 03:24:16 2011
New Revision: 1131570
URL: http://svn.apache.org/viewvc?rev=1131570&view=rev
Log:
refactoring
Modified:
incubator/mesos/trunk/src/leader_detector.cpp
incubator/mesos/trunk/src/leader_detector.hpp
incubator/mesos/trunk/src/master.cpp
incubator/mesos/trunk/src/nexus_sched.cpp
incubator/mesos/trunk/src/slave.cpp
Modified: incubator/mesos/trunk/src/leader_detector.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/leader_detector.cpp?rev=1131570&r1=1131569&r2=1131570&view=diff
==============================================================================
--- incubator/mesos/trunk/src/leader_detector.cpp (original)
+++ incubator/mesos/trunk/src/leader_detector.cpp Sun Jun 5 03:24:16 2011
@@ -22,7 +22,7 @@ void LeaderDetector::leaderWatchWrap(zha
LeaderDetector::LeaderDetector(string server, bool contendLeader, string ld, LeaderListener *ll) :
leaderListener(ll),
zh(NULL),mydata(ld),
- zooserver(server),currentLeaderId(""), mySequence("")
+ zooserver(server),currentLeaderSeq(""), mySeq("")
{
zh = zookeeper_init(zooserver.c_str(), initWatchWrap, 1000, 0, NULL, 0);
@@ -38,8 +38,8 @@ LeaderDetector::LeaderDetector(string se
ret = zoo_create(zh, "/nxmaster/", mydata.c_str(), mydata.length(), &ZOO_OPEN_ACL_UNSAFE, ZOO_SEQUENCE | ZOO_EPHEMERAL, buf, 100);
LOG_IF(ERROR, ret!=ZOK)<<"zoo_create() ephemeral/sequence returned error:"<<ret;
if (ret==ZOK) {
- setSequence(string(buf));
- LOG(INFO)<<"Created ephemeral/sequence:"<<mySequence;
+ setMySeq(string(buf));
+ LOG(INFO)<<"Created ephemeral/sequence:"<<mySeq;
}
}
@@ -78,10 +78,10 @@ bool LeaderDetector::detectLeader() {
}
}
- if (leader!=currentLeaderId) {
- currentLeaderId=leader;
+ if (leader!=currentLeaderSeq) {
+ currentLeaderSeq=leader;
- string data = fetchLeaderData(leader);
+ string data = fetchLeaderPID(leader);
newLeader(leader, data); // both params could be ""
@@ -90,10 +90,10 @@ bool LeaderDetector::detectLeader() {
return 0;
}
-string LeaderDetector::fetchLeaderData(string id) {
+string LeaderDetector::fetchLeaderPID(string id) {
if (id=="") {
- currentLeaderData = "";
- return currentLeaderData;
+ currentLeaderPID = "";
+ return currentLeaderPID;
}
string path="/nxmaster/";
path+=id;
@@ -104,26 +104,22 @@ string LeaderDetector::fetchLeaderData(s
LOG_IF(INFO, ret==ZOK)<<"zoo_get leader data fetch returned "<<buf[0];
string tmp(buf,buflen);
- currentLeaderData=tmp;
- return currentLeaderData;
+ currentLeaderPID=tmp;
+ return currentLeaderPID;
}
-pair<string,string> LeaderDetector::getCurrentLeader() {
- return pair<string,string>(getCurrentLeaderId(),getCurrentLeaderData());
+string LeaderDetector::getCurrentLeaderSeq() {
+ return currentLeaderSeq;
}
-string LeaderDetector::getCurrentLeaderId() {
- return currentLeaderId;
+string LeaderDetector::getCurrentLeaderPID() {
+ return currentLeaderPID;
}
-string LeaderDetector::getCurrentLeaderData() {
- return currentLeaderData;
-}
-
-void LeaderDetector::newLeader(string leader, string leaderData) {
- LOG(INFO)<<"New leader ephemeral_id:"<<leader<<" data:"<<leaderData;
+void LeaderDetector::newLeader(string leader, string leaderPID) {
+ LOG(INFO)<<"New leader ephemeral_id:"<<leader<<" data:"<<leaderPID;
if (leaderListener!=NULL)
- leaderListener->newLeaderElected(leader,leaderData);
+ leaderListener->newLeaderElected(leader,leaderPID);
}
LeaderDetector::~LeaderDetector() {
@@ -138,7 +134,7 @@ int main(int argc, char **argv) {
if (argc==2)
name=argv[1];
LeaderDetector ld(1, name);
- string s = ld.getCurrentLeaderId();
+ string s = ld.getCurrentLeaderSeq();
debug("Leader is "<<s<<endl<<flush);
sleep(50);
Modified: incubator/mesos/trunk/src/leader_detector.hpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/leader_detector.hpp?rev=1131570&r1=1131569&r2=1131570&view=diff
==============================================================================
--- incubator/mesos/trunk/src/leader_detector.hpp (original)
+++ incubator/mesos/trunk/src/leader_detector.hpp Sun Jun 5 03:24:16 2011
@@ -21,13 +21,11 @@ class LeaderDetector {
public:
LeaderDetector(string server, bool contendLeader=0, string ld="", LeaderListener * ll=NULL);
- void leaderWatch(zhandle_t *zh, int type, int state, const char *path);
-
pair<string,string> getCurrentLeader();
- string getCurrentLeaderId();
+ string getCurrentLeaderSeq();
- string getCurrentLeaderData();
+ string getCurrentLeaderPID();
void setListener(LeaderListener *l) {
leaderListener = l;
@@ -37,16 +35,8 @@ public:
return leaderListener;
}
- void setSequence(string seq) { // converts "/nxmaster/000000131" to "000000131"
- int pos;
- if ((pos=seq.find_last_of('/'))!=string::npos ) {
- mySequence = seq.erase(0,pos+1);
- } else
- mySequence = "";
- }
-
- string getSequence() const {
- return mySequence;
+ string getMySeq() const {
+ return mySeq;
}
~LeaderDetector();
@@ -56,17 +46,26 @@ public:
static void leaderWatchWrap(zhandle_t *zh, int type, int state, const char *path, void *watcherCtx);
private:
+ void setMySeq(string seq) { // converts "/nxmaster/000000131" to "000000131"
+ int pos;
+ if ((pos=seq.find_last_of('/'))!=string::npos ) {
+ mySeq = seq.erase(0,pos+1);
+ } else
+ mySeq = "";
+ }
+
+ void leaderWatch(zhandle_t *zh, int type, int state, const char *path);
bool detectLeader();
- string fetchLeaderData(string id);
- void newLeader(string leader,string leaderData);
+ string fetchLeaderPID(string id);
+ void newLeader(string leader,string leaderPID);
LeaderListener *leaderListener;
zhandle_t *zh;
string mydata;
string zooserver;
- string currentLeaderId;
- string currentLeaderData;
- string mySequence;
+ string currentLeaderSeq;
+ string currentLeaderPID;
+ string mySeq;
String_vector sv;
Modified: incubator/mesos/trunk/src/master.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/master.cpp?rev=1131570&r1=1131569&r2=1131570&view=diff
==============================================================================
--- incubator/mesos/trunk/src/master.cpp (original)
+++ incubator/mesos/trunk/src/master.cpp Sun Jun 5 03:24:16 2011
@@ -286,7 +286,7 @@ void Master::operator () ()
lpid<<self();
leaderDetector = new LeaderDetector(zkservers, true, lpid.str());
- masterId = lexical_cast<long>(leaderDetector->getSequence());
+ masterId = lexical_cast<long>(leaderDetector->getMySeq());
LOG(INFO)<<"Master ID:"<<masterId;
}
Modified: incubator/mesos/trunk/src/nexus_sched.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/nexus_sched.cpp?rev=1131570&r1=1131569&r2=1131570&view=diff
==============================================================================
--- incubator/mesos/trunk/src/nexus_sched.cpp (original)
+++ incubator/mesos/trunk/src/nexus_sched.cpp Sun Jun 5 03:24:16 2011
@@ -142,12 +142,13 @@ protected:
leaderDetector = new LeaderDetector(zkservers, false, "", NULL);
leaderDetector->setListener(&schedLeaderListener); // use this instead of constructor to avoid race condition
- pair<string,string> zkleader = leaderDetector->getCurrentLeader();
- LOG(INFO) << "Detected leader at " << zkleader.second <<" with ephemeral id:"<<zkleader.first;
+ string leaderPidStr = leaderDetector->getCurrentLeaderPID();
+ string leaderSeq = leaderDetector->getCurrentLeaderSeq();
+ LOG(INFO) << "Detected leader at " << leaderPidStr << " with ephemeral id:" << leaderSeq;
- istringstream iss(zkleader.second);
+ istringstream iss(leaderPidStr);
if (!(iss >> master)) {
- cerr << "Failed to resolve master PID " << zkleader.second << endl;
+ cerr << "Failed to resolve master PID " << leaderPidStr << endl;
}
}
Modified: incubator/mesos/trunk/src/slave.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/slave.cpp?rev=1131570&r1=1131569&r2=1131570&view=diff
==============================================================================
--- incubator/mesos/trunk/src/slave.cpp (original)
+++ incubator/mesos/trunk/src/slave.cpp Sun Jun 5 03:24:16 2011
@@ -145,12 +145,13 @@ void Slave::operator () ()
leaderDetector = new LeaderDetector(zkserver, false, "", NULL);
leaderDetector->setListener(&slaveLeaderListener); // use this instead of constructor to avoid race condition
- pair<string,string> zkleader = leaderDetector->getCurrentLeader();
- LOG(INFO) << "Detected leader at " << zkleader.second <<" with ephemeral id:"<<zkleader.first;
+ string leaderPidStr = leaderDetector->getCurrentLeaderPID();
+ string leaderSeq = leaderDetector->getCurrentLeaderSeq();
+ LOG(INFO) << "Detected leader at " << leaderPidStr << " with ephemeral id:" << leaderSeq;
- istringstream iss(zkleader.second);
+ istringstream iss(leaderPidStr);
if (!(iss >> master)) {
- cerr << "Failed to resolve master PID " << zkleader.second << endl;
+ cerr << "Failed to resolve master PID " << leaderPidStr << endl;
}
}