Landed. Sorry for the noise. On Wed, Nov 12, 2014 at 2:17 PM, Dominic Hamon <[email protected]> wrote:
> https://reviews.apache.org/r/27932/ > > On Wed, Nov 12, 2014 at 2:15 PM, Dominic Hamon <[email protected]> > wrote: > >> thanks for the head's up - it didn't show up in my linux clang build. >> >> testing a fix now. >> >> On Wed, Nov 12, 2014 at 2:12 PM, Cody Maloney <[email protected]> wrote: >> >>> I'm getting a new warning with this on OS X w/ clang 3.5 which looks like >>> it probably should be addressed (Add parens to call the node function): >>> >>> ../../../mesos_public/3rdparty/libprocess/src/process.cpp:1662:49: >>> warning: >>> address of function 'process::node' will always evaluate to 'true' >>> [-Wbool-conversion] >>> VLOG(1) << "libprocess is initialized on " << node << " for " << cpus >>> ~~~~~~~ ^~~~ >>> ../../../mesos_public/3rdparty/libprocess/src/process.cpp:1662:49: note: >>> prefix with the address-of operator to silence this warning >>> VLOG(1) << "libprocess is initialized on " << node << " for " << cpus >>> ^ >>> & >>> >>> On Wed, Nov 12, 2014 at 1:05 PM, <[email protected]> wrote: >>> >>> > Repository: mesos >>> > Updated Branches: >>> > refs/heads/master 3f693f23a -> 76bfb4930 >>> > >>> > >>> > libprocess: Replaced the ip and port pairs from UPID class and process >>> > namespace with Node class. >>> > >>> > At the moment, the Node class is used to keep a mapping from a socket >>> to >>> > the ip & port pair in the process namespace. >>> > I want to propose to extend its use by replacing the ip & port fields >>> from >>> > the UPID class and process namespace with this type. >>> > >>> > Review: https://reviews.apache.org/r/27446 >>> > >>> > >>> > Project: http://git-wip-us.apache.org/repos/asf/mesos/repo >>> > Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f64562fa >>> > Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f64562fa >>> > Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f64562fa >>> > >>> > Branch: refs/heads/master >>> > Commit: f64562fa66a272b695560971d0e548d131f42682 >>> > Parents: 3f693f2 >>> > Author: Evelina Dumitrescu <[email protected]> >>> > Authored: Wed Nov 12 12:56:23 2014 -0800 >>> > Committer: Dominic Hamon <[email protected]> >>> > Committed: Wed Nov 12 12:56:47 2014 -0800 >>> > >>> > ---------------------------------------------------------------------- >>> > 3rdparty/libprocess/include/process/node.hpp | 28 ++++++- >>> > 3rdparty/libprocess/include/process/pid.hpp | 49 +++++------ >>> > 3rdparty/libprocess/include/process/process.hpp | 11 +-- >>> > 3rdparty/libprocess/src/http.cpp | 13 +-- >>> > 3rdparty/libprocess/src/pid.cpp | 28 +++---- >>> > 3rdparty/libprocess/src/process.cpp | 88 >>> ++++++++------------ >>> > 3rdparty/libprocess/src/tests/benchmarks.cpp | 4 +- >>> > 3rdparty/libprocess/src/tests/http_tests.cpp | 4 +- >>> > 3rdparty/libprocess/src/tests/metrics_tests.cpp | 6 +- >>> > 3rdparty/libprocess/src/tests/process_tests.cpp | 6 +- >>> > 10 files changed, 103 insertions(+), 134 deletions(-) >>> > ---------------------------------------------------------------------- >>> > >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/include/process/node.hpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/include/process/node.hpp >>> > b/3rdparty/libprocess/include/process/node.hpp >>> > index 7a96894..24132a5 100644 >>> > --- a/3rdparty/libprocess/include/process/node.hpp >>> > +++ b/3rdparty/libprocess/include/process/node.hpp >>> > @@ -1,17 +1,22 @@ >>> > #ifndef __PROCESS_NODE_HPP__ >>> > #define __PROCESS_NODE_HPP__ >>> > >>> > +#include <arpa/inet.h> >>> > #include <unistd.h> >>> > >>> > #include <sstream> >>> > >>> > +#include <glog/logging.h> >>> > + >>> > namespace process { >>> > >>> > // Represents a remote "node" (encapsulates IP address and port). >>> > class Node >>> > { >>> > public: >>> > - Node(uint32_t _ip = 0, uint16_t _port = 0) : ip(_ip), port(_port) {} >>> > + Node() : ip(0), port(0) {} >>> > + >>> > + Node(uint32_t _ip, uint16_t _port) : ip(_ip), port(_port) {} >>> > >>> > bool operator < (const Node& that) const >>> > { >>> > @@ -22,16 +27,31 @@ public: >>> > } >>> > } >>> > >>> > - std::ostream& operator << (std::ostream& stream) const >>> > + bool operator == (const Node& that) const >>> > + { >>> > + return (ip == that.ip && port == that.port); >>> > + } >>> > + >>> > + bool operator != (const Node& that) const >>> > { >>> > - stream << ip << ":" << port; >>> > - return stream; >>> > + return !(*this == that); >>> > } >>> > >>> > uint32_t ip; >>> > uint16_t port; >>> > }; >>> > >>> > +inline std::ostream& operator << (std::ostream & stream, const Node & >>> > node) >>> > +{ >>> > + char ip[INET_ADDRSTRLEN]; >>> > + if (inet_ntop(AF_INET, (in_addr*) &node.ip, ip, INET_ADDRSTRLEN) == >>> > NULL) { >>> > + PLOG(FATAL) << "Failed to get human-readable IP address for '" >>> > + << node.ip << "'"; >>> > + } >>> > + stream << ip << ":" << node.port; >>> > + return stream; >>> > +} >>> > + >>> > } // namespace process { >>> > >>> > #endif // __PROCESS_NODE_HPP__ >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/include/process/pid.hpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/include/process/pid.hpp >>> > b/3rdparty/libprocess/include/process/pid.hpp >>> > index 2345322..7dccf29 100644 >>> > --- a/3rdparty/libprocess/include/process/pid.hpp >>> > +++ b/3rdparty/libprocess/include/process/pid.hpp >>> > @@ -7,6 +7,7 @@ >>> > #include <sstream> >>> > #include <string> >>> > >>> > +#include <process/node.hpp> >>> > >>> > namespace process { >>> > >>> > @@ -16,17 +17,22 @@ class ProcessBase; >>> > >>> > struct UPID >>> > { >>> > - UPID() >>> > - : ip(0), port(0) {} >>> > + UPID() = default; >>> > >>> > UPID(const UPID& that) >>> > - : id(that.id), ip(that.ip), port(that.port) {} >>> > + : id(that.id), node(that.node) {} >>> > >>> > UPID(const char* id_, uint32_t ip_, uint16_t port_) >>> > - : id(id_), ip(ip_), port(port_) {} >>> > + : id(id_), node(ip_, port_) {} >>> > + >>> > + UPID(const char* id_, const Node& node_) >>> > + : id(id_), node(node_) {} >>> > >>> > UPID(const std::string& id_, uint32_t ip_, uint16_t port_) >>> > - : id(id_), ip(ip_), port(port_) {} >>> > + : id(id_), node(ip_, port_) {} >>> > + >>> > + UPID(const std::string& id_, const Node& node_) >>> > + : id(id_), node(node_) {} >>> > >>> > /*implicit*/ UPID(const char* s); >>> > >>> > @@ -38,47 +44,33 @@ struct UPID >>> > >>> > operator bool () const >>> > { >>> > - return id != "" && ip != 0 && port != 0; >>> > + return id != "" && node.ip != 0 && node.port != 0; >>> > } >>> > >>> > bool operator ! () const // NOLINT(whitespace/operators) >>> > { >>> > - return id == "" && ip == 0 && port == 0; >>> > + return id == "" && node.ip == 0 && node.port == 0; >>> > } >>> > >>> > bool operator < (const UPID& that) const >>> > { >>> > - if (this != &that) { >>> > - if (ip == that.ip && port == that.port) >>> > - return id < that.id; >>> > - else if (ip == that.ip && port != that.port) >>> > - return port < that.port; >>> > - else >>> > - return ip < that.ip; >>> > - } >>> > - >>> > - return false; >>> > + if (node == that.node) >>> > + return id < that.id; >>> > + else return node < that.node; >>> > } >>> > >>> > bool operator == (const UPID& that) const >>> > { >>> > - if (this != &that) { >>> > - return (id == that.id && >>> > - ip == that.ip && >>> > - port == that.port); >>> > - } >>> > - >>> > - return true; >>> > + return (id == that.id && node == that.node); >>> > } >>> > >>> > bool operator != (const UPID& that) const >>> > { >>> > - return !(this->operator == (that)); >>> > + return !(*this == that); >>> > } >>> > >>> > std::string id; >>> > - uint32_t ip; >>> > - uint16_t port; >>> > + Node node; >>> > }; >>> > >>> > >>> > @@ -99,8 +91,7 @@ struct PID : UPID >>> > (void)base; // Eliminate unused base warning. >>> > PID<Base> pid; >>> > pid.id = id; >>> > - pid.ip = ip; >>> > - pid.port = port; >>> > + pid.node = node; >>> > return pid; >>> > } >>> > }; >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/include/process/process.hpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/include/process/process.hpp >>> > b/3rdparty/libprocess/include/process/process.hpp >>> > index 81a1f7a..cb3e0a6 100644 >>> > --- a/3rdparty/libprocess/include/process/process.hpp >>> > +++ b/3rdparty/libprocess/include/process/process.hpp >>> > @@ -276,16 +276,9 @@ void finalize(); >>> > >>> > >>> > /** >>> > - * Returns the IP address associated with this instance of the >>> > - * library. >>> > + * Returns the node associated with this instance of the library. >>> > */ >>> > -uint32_t ip(); >>> > - >>> > - >>> > -/** >>> > - * Returns the port associated with this instance of the library. >>> > - */ >>> > -uint16_t port(); >>> > +Node node(); >>> > >>> > >>> > /** >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/http.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/http.cpp >>> > b/3rdparty/libprocess/src/http.cpp >>> > index 4ef00d1..b00f333 100644 >>> > --- a/3rdparty/libprocess/src/http.cpp >>> > +++ b/3rdparty/libprocess/src/http.cpp >>> > @@ -79,20 +79,13 @@ Future<Response> request( >>> > return Failure("Failed to cloexec: " + cloexec.error()); >>> > } >>> > >>> > - // We use inet_ntop since inet_ntoa is not thread-safe! >>> > - char ip[INET_ADDRSTRLEN]; >>> > - if (inet_ntop(AF_INET, (in_addr*) &upid.ip, ip, INET_ADDRSTRLEN) == >>> > NULL) { >>> > - return Failure(ErrnoError("Failed to get human-readable IP address >>> > for '" + >>> > - stringify(upid.ip) + "'")); >>> > - } >>> > - >>> > - const string host = string(ip) + ":" + stringify(upid.port); >>> > + const string host = stringify(upid.node); >>> > >>> > sockaddr_in addr; >>> > memset(&addr, 0, sizeof(addr)); >>> > addr.sin_family = AF_INET; >>> > - addr.sin_port = htons(upid.port); >>> > - addr.sin_addr.s_addr = upid.ip; >>> > + addr.sin_port = htons(upid.node.port); >>> > + addr.sin_addr.s_addr = upid.node.ip; >>> > >>> > if (connect(s, (sockaddr*) &addr, sizeof(addr)) < 0) { >>> > os::close(s); >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/pid.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/pid.cpp >>> > b/3rdparty/libprocess/src/pid.cpp >>> > index 20ff25c..a2c620e 100644 >>> > --- a/3rdparty/libprocess/src/pid.cpp >>> > +++ b/3rdparty/libprocess/src/pid.cpp >>> > @@ -47,8 +47,7 @@ UPID::UPID(const std::string& s) >>> > UPID::UPID(const ProcessBase& process) >>> > { >>> > id = process.self().id; >>> > - ip = process.self().ip; >>> > - port = process.self().port; >>> > + node = process.self().node; >>> > } >>> > >>> > >>> > @@ -62,12 +61,7 @@ UPID::operator std::string() const >>> > >>> > ostream& operator << (ostream& stream, const UPID& pid) >>> > { >>> > - // Call inet_ntop since inet_ntoa is not thread-safe! >>> > - char ip[INET_ADDRSTRLEN]; >>> > - if (inet_ntop(AF_INET, (in_addr *) &pid.ip, ip, INET_ADDRSTRLEN) == >>> > NULL) >>> > - memset(ip, 0, INET_ADDRSTRLEN); >>> > - >>> > - stream << pid.id << "@" << ip << ":" << pid.port; >>> > + stream << pid.id << "@" << pid.node; >>> > return stream; >>> > } >>> > >>> > @@ -75,8 +69,8 @@ ostream& operator << (ostream& stream, const UPID& >>> pid) >>> > istream& operator >> (istream& stream, UPID& pid) >>> > { >>> > pid.id = ""; >>> > - pid.ip = 0; >>> > - pid.port = 0; >>> > + pid.node.ip = 0; >>> > + pid.node.port = 0; >>> > >>> > string str; >>> > if (!(stream >> str)) { >>> > @@ -93,8 +87,7 @@ istream& operator >> (istream& stream, UPID& pid) >>> > >>> > string id; >>> > string host; >>> > - uint32_t ip; >>> > - uint16_t port; >>> > + Node node; >>> > >>> > size_t index = str.find('@'); >>> > >>> > @@ -149,20 +142,19 @@ istream& operator >> (istream& stream, UPID& pid) >>> > return stream; >>> > } >>> > >>> > - ip = *((uint32_t*) hep->h_addr_list[0]); >>> > + node.ip = *((uint32_t*) hep->h_addr_list[0]); >>> > >>> > delete[] temp; >>> > >>> > str = str.substr(index + 1); >>> > >>> > - if (sscanf(str.c_str(), "%hu", &port) != 1) { >>> > + if (sscanf(str.c_str(), "%hu", &node.port) != 1) { >>> > stream.setstate(std::ios_base::badbit); >>> > return stream; >>> > } >>> > >>> > pid.id = id; >>> > - pid.ip = ip; >>> > - pid.port = port; >>> > + pid.node = node; >>> > >>> > return stream; >>> > } >>> > @@ -172,8 +164,8 @@ size_t hash_value(const UPID& pid) >>> > { >>> > size_t seed = 0; >>> > boost::hash_combine(seed, pid.id); >>> > - boost::hash_combine(seed, pid.ip); >>> > - boost::hash_combine(seed, pid.port); >>> > + boost::hash_combine(seed, pid.node.ip); >>> > + boost::hash_combine(seed, pid.node.port); >>> > return seed; >>> > } >>> > >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/process.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/process.cpp >>> > b/3rdparty/libprocess/src/process.cpp >>> > index 85fb995..a34b870 100644 >>> > --- a/3rdparty/libprocess/src/process.cpp >>> > +++ b/3rdparty/libprocess/src/process.cpp >>> > @@ -436,11 +436,8 @@ static uint32_t __id__ = 0; >>> > // Local server socket. >>> > static int __s__ = -1; >>> > >>> > -// Local IP address. >>> > -static uint32_t __ip__ = 0; >>> > - >>> > -// Local port. >>> > -static uint16_t __port__ = 0; >>> > +// Local node. >>> > +static Node __node__; >>> > >>> > // Active SocketManager (eventually will probably be thread-local). >>> > static SocketManager* socket_manager = NULL; >>> > @@ -709,7 +706,7 @@ static Message* encode(const UPID& from, >>> > >>> > static void transport(Message* message, ProcessBase* sender = NULL) >>> > { >>> > - if (message->to.ip == __ip__ && message->to.port == __port__) { >>> > + if (message->to.node == __node__) { >>> > // Local message. >>> > process_manager->deliver(message->to, new MessageEvent(message), >>> > sender); >>> > } else { >>> > @@ -766,7 +763,7 @@ static Message* parse(Request* request) >>> > return NULL; >>> > } >>> > >>> > - const UPID to(decode.get(), __ip__, __port__); >>> > + const UPID to(decode.get(), __node__); >>> > >>> > // And now determine 'name'. >>> > index = index != string::npos ? index + 2: request->path.size(); >>> > @@ -1472,15 +1469,15 @@ void initialize(const string& delegate) >>> > } >>> > } >>> > >>> > - __ip__ = 0; >>> > - __port__ = 0; >>> > + __node__.ip = 0; >>> > + __node__.port = 0; >>> > >>> > char* value; >>> > >>> > // Check environment for ip. >>> > value = getenv("LIBPROCESS_IP"); >>> > if (value != NULL) { >>> > - int result = inet_pton(AF_INET, value, &__ip__); >>> > + int result = inet_pton(AF_INET, value, &__node__.ip); >>> > if (result == 0) { >>> > LOG(FATAL) << "LIBPROCESS_IP=" << value << " was unparseable"; >>> > } else if (result < 0) { >>> > @@ -1495,7 +1492,7 @@ void initialize(const string& delegate) >>> > if (result < 0 || result > USHRT_MAX) { >>> > LOG(FATAL) << "LIBPROCESS_PORT=" << value << " is not a valid >>> port"; >>> > } >>> > - __port__ = result; >>> > + __node__.port = result; >>> > } >>> > >>> > // Create a "server" socket for communicating with other nodes. >>> > @@ -1525,12 +1522,11 @@ void initialize(const string& delegate) >>> > sockaddr_in addr; >>> > memset(&addr, 0, sizeof(addr)); >>> > addr.sin_family = PF_INET; >>> > - addr.sin_addr.s_addr = __ip__; >>> > - addr.sin_port = htons(__port__); >>> > + addr.sin_addr.s_addr = __node__.ip; >>> > + addr.sin_port = htons(__node__.port); >>> > >>> > if (bind(__s__, (sockaddr*) &addr, sizeof(addr)) < 0) { >>> > - PLOG(FATAL) << "Failed to initialize, bind " >>> > - << inet_ntoa(addr.sin_addr) << ":" << __port__; >>> > + PLOG(FATAL) << "Failed to initialize, bind " << __node__; >>> > } >>> > >>> > // Lookup and store assigned ip and assigned port. >>> > @@ -1539,14 +1535,14 @@ void initialize(const string& delegate) >>> > PLOG(FATAL) << "Failed to initialize, getsockname"; >>> > } >>> > >>> > - __ip__ = addr.sin_addr.s_addr; >>> > - __port__ = ntohs(addr.sin_port); >>> > + __node__.ip = addr.sin_addr.s_addr; >>> > + __node__.port = ntohs(addr.sin_port); >>> > >>> > // Lookup hostname if missing ip or if ip is 127.0.0.1 in case we >>> > // actually have a valid external ip address. Note that we need only >>> > // one ip address, so that other processes can send and receive and >>> > // don't get confused as to whom they are sending to. >>> > - if (__ip__ == 0 || __ip__ == 2130706433) { >>> > + if (__node__.ip == 0 || __node__.ip == 2130706433) { >>> > char hostname[512]; >>> > >>> > if (gethostname(hostname, sizeof(hostname)) < 0) { >>> > @@ -1562,7 +1558,7 @@ void initialize(const string& delegate) >>> > << hstrerror(h_errno); >>> > } >>> > >>> > - __ip__ = *((uint32_t *) he->h_addr_list[0]); >>> > + __node__.ip = *((uint32_t *) he->h_addr_list[0]); >>> > } >>> > >>> > if (listen(__s__, 500000) < 0) { >>> > @@ -1663,13 +1659,8 @@ void initialize(const string& delegate) >>> > >>> > new Route("/__processes__", None(), __processes__); >>> > >>> > - char temp[INET_ADDRSTRLEN]; >>> > - if (inet_ntop(AF_INET, (in_addr*) &__ip__, temp, INET_ADDRSTRLEN) == >>> > NULL) { >>> > - PLOG(FATAL) << "Failed to initialize, inet_ntop"; >>> > - } >>> > - >>> > - VLOG(1) << "libprocess is initialized on " << temp << ":" << >>> __port__ >>> > - << " for " << cpus << " cpus"; >>> > + VLOG(1) << "libprocess is initialized on " << node << " for " << >>> cpus >>> > + << " cpus"; >>> > } >>> > >>> > >>> > @@ -1679,17 +1670,10 @@ void finalize() >>> > } >>> > >>> > >>> > -uint32_t ip() >>> > -{ >>> > - process::initialize(); >>> > - return __ip__; >>> > -} >>> > - >>> > - >>> > -uint16_t port() >>> > +Node node() >>> > { >>> > process::initialize(); >>> > - return __port__; >>> > + return __node__; >>> > } >>> > >>> > >>> > @@ -1968,12 +1952,9 @@ void SocketManager::link(ProcessBase* process, >>> > const UPID& to) >>> > >>> > CHECK(process != NULL); >>> > >>> > - Node node(to.ip, to.port); >>> > - >>> > synchronized (this) { >>> > // Check if node is remote and there isn't a persistant link. >>> > - if ((node.ip != __ip__ || node.port != __port__) >>> > - && persists.count(node) == 0) { >>> > + if (to.node != __node__ && persists.count(to.node) == 0) { >>> > // Okay, no link, let's create a socket. >>> > Try<int> socket = process::socket(AF_INET, SOCK_STREAM, 0); >>> > if (socket.isError()) { >>> > @@ -1993,9 +1974,9 @@ void SocketManager::link(ProcessBase* process, >>> const >>> > UPID& to) >>> > } >>> > >>> > sockets[s] = Socket(s); >>> > - nodes[s] = node; >>> > + nodes[s] = to.node; >>> > >>> > - persists[node] = s; >>> > + persists[to.node] = s; >>> > >>> > // Allocate and initialize a watcher for reading data from this >>> > // socket. Note that we don't expect to receive anything other >>> > @@ -2009,8 +1990,8 @@ void SocketManager::link(ProcessBase* process, >>> const >>> > UPID& to) >>> > sockaddr_in addr; >>> > memset(&addr, 0, sizeof(addr)); >>> > addr.sin_family = PF_INET; >>> > - addr.sin_port = htons(to.port); >>> > - addr.sin_addr.s_addr = to.ip; >>> > + addr.sin_port = htons(to.node.port); >>> > + addr.sin_addr.s_addr = to.node.ip; >>> > >>> > if (connect(s, (sockaddr*) &addr, sizeof(addr)) < 0) { >>> > if (errno != EINPROGRESS) { >>> > @@ -2130,7 +2111,7 @@ void SocketManager::send(Message* message) >>> > { >>> > CHECK(message != NULL); >>> > >>> > - Node node(message->to.ip, message->to.port); >>> > + Node node(message->to.node); >>> > >>> > synchronized (this) { >>> > // Check if there is already a socket. >>> > @@ -2190,8 +2171,8 @@ void SocketManager::send(Message* message) >>> > sockaddr_in addr; >>> > memset(&addr, 0, sizeof(addr)); >>> > addr.sin_family = PF_INET; >>> > - addr.sin_port = htons(message->to.port); >>> > - addr.sin_addr.s_addr = message->to.ip; >>> > + addr.sin_port = htons(node.port); >>> > + addr.sin_addr.s_addr = node.ip; >>> > >>> > if (connect(s, (sockaddr*) &addr, sizeof(addr)) < 0) { >>> > if (errno != EINPROGRESS) { >>> > @@ -2380,7 +2361,7 @@ void SocketManager::exited(const Node& node) >>> > list<UPID> removed; >>> > // Look up all linked processes. >>> > foreachpair (const UPID& linkee, set<ProcessBase*>& processes, >>> links) >>> > { >>> > - if (linkee.ip == node.ip && linkee.port == node.port) { >>> > + if (linkee.node == node) { >>> > foreach (ProcessBase* linker, processes) { >>> > linker->enqueue(new ExitedEvent(linkee)); >>> > } >>> > @@ -2461,7 +2442,7 @@ ProcessManager::~ProcessManager() >>> > >>> > ProcessReference ProcessManager::use(const UPID& pid) >>> > { >>> > - if (pid.ip == __ip__ && pid.port == __port__) { >>> > + if (pid.node == __node__) { >>> > synchronized (processes) { >>> > if (processes.count(pid.id) > 0) { >>> > // Note that the ProcessReference constructor _must_ get >>> > @@ -2567,12 +2548,12 @@ bool ProcessManager::handle( >>> > >>> > if (tokens.size() == 0 && delegate != "") { >>> > request->path = "/" + delegate; >>> > - receiver = use(UPID(delegate, __ip__, __port__)); >>> > + receiver = use(UPID(delegate, __node__)); >>> > } else if (tokens.size() > 0) { >>> > // Decode possible percent-encoded path. >>> > Try<string> decode = http::decode(tokens[0]); >>> > if (!decode.isError()) { >>> > - receiver = use(UPID(decode.get(), __ip__, __port__)); >>> > + receiver = use(UPID(decode.get(), __node__)); >>> > } else { >>> > VLOG(1) << "Failed to decode URL path: " << decode.error(); >>> > } >>> > @@ -2581,7 +2562,7 @@ bool ProcessManager::handle( >>> > if (!receiver && delegate != "") { >>> > // Try and delegate the request. >>> > request->path = "/" + delegate + request->path; >>> > - receiver = use(UPID(delegate, __ip__, __port__)); >>> > + receiver = use(UPID(delegate, __node__)); >>> > } >>> > >>> > if (receiver) { >>> > @@ -2900,7 +2881,7 @@ void ProcessManager::cleanup(ProcessBase* >>> process) >>> > void ProcessManager::link(ProcessBase* process, const UPID& to) >>> > { >>> > // Check if the pid is local. >>> > - if (!(to.ip == __ip__ && to.port == __port__)) { >>> > + if (to.node != __node__) { >>> > socket_manager->link(process, to); >>> > } else { >>> > // Since the pid is local we want to get a reference to it's >>> > @@ -3249,8 +3230,7 @@ ProcessBase::ProcessBase(const string& id) >>> > refs = 0; >>> > >>> > pid.id = id != "" ? id : ID::generate(); >>> > - pid.ip = __ip__; >>> > - pid.port = __port__; >>> > + pid.node = __node__; >>> > >>> > // If using a manual clock, try and set current time of process >>> > // using happens before relationship between creator and createe! >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/tests/benchmarks.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/tests/benchmarks.cpp >>> > b/3rdparty/libprocess/src/tests/benchmarks.cpp >>> > index 3177a8e..227b8e7 100644 >>> > --- a/3rdparty/libprocess/src/tests/benchmarks.cpp >>> > +++ b/3rdparty/libprocess/src/tests/benchmarks.cpp >>> > @@ -102,9 +102,9 @@ public: >>> > private: >>> > void ping(const UPID& from, const string& body) >>> > { >>> > - if (linkedPorts.find(from.port) == linkedPorts.end()) { >>> > + if (linkedPorts.find(from.node.port) == linkedPorts.end()) { >>> > setLink(from); >>> > - linkedPorts.insert(from.port); >>> > + linkedPorts.insert(from.node.port); >>> > } >>> > static const string message("hi"); >>> > send(from, "pong", message.c_str(), message.size()); >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/tests/http_tests.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/tests/http_tests.cpp >>> > b/3rdparty/libprocess/src/tests/http_tests.cpp >>> > index a1c3685..a90e65f 100644 >>> > --- a/3rdparty/libprocess/src/tests/http_tests.cpp >>> > +++ b/3rdparty/libprocess/src/tests/http_tests.cpp >>> > @@ -120,8 +120,8 @@ TEST(HTTP, Endpoints) >>> > sockaddr_in addr; >>> > memset(&addr, 0, sizeof(addr)); >>> > addr.sin_family = PF_INET; >>> > - addr.sin_port = htons(process.self().port); >>> > - addr.sin_addr.s_addr = process.self().ip; >>> > + addr.sin_port = htons(process.self().node.port); >>> > + addr.sin_addr.s_addr = process.self().node.ip; >>> > >>> > ASSERT_EQ(0, connect(s, (sockaddr*) &addr, sizeof(addr))); >>> > >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/tests/metrics_tests.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/tests/metrics_tests.cpp >>> > b/3rdparty/libprocess/src/tests/metrics_tests.cpp >>> > index 33539e4..0c80c69 100644 >>> > --- a/3rdparty/libprocess/src/tests/metrics_tests.cpp >>> > +++ b/3rdparty/libprocess/src/tests/metrics_tests.cpp >>> > @@ -147,7 +147,7 @@ TEST(Metrics, Snapshot) >>> > { >>> > ASSERT_TRUE(GTEST_IS_THREADSAFE); >>> > >>> > - UPID upid("metrics", process::ip(), process::port()); >>> > + UPID upid("metrics", process::node()); >>> > >>> > Clock::pause(); >>> > >>> > @@ -219,7 +219,7 @@ TEST(Metrics, SnapshotTimeout) >>> > { >>> > ASSERT_TRUE(GTEST_IS_THREADSAFE); >>> > >>> > - UPID upid("metrics", process::ip(), process::port()); >>> > + UPID upid("metrics", process::node()); >>> > >>> > Clock::pause(); >>> > >>> > @@ -320,7 +320,7 @@ TEST(Metrics, SnapshotTimeout) >>> > // Ensures that the aggregate statistics are correct in the snapshot. >>> > TEST(Metrics, SnapshotStatistics) >>> > { >>> > - UPID upid("metrics", process::ip(), process::port()); >>> > + UPID upid("metrics", process::node()); >>> > >>> > Clock::pause(); >>> > >>> > >>> > >>> > >>> http://git-wip-us.apache.org/repos/asf/mesos/blob/f64562fa/3rdparty/libprocess/src/tests/process_tests.cpp >>> > ---------------------------------------------------------------------- >>> > diff --git a/3rdparty/libprocess/src/tests/process_tests.cpp >>> > b/3rdparty/libprocess/src/tests/process_tests.cpp >>> > index b985fb7..902d4d3 100644 >>> > --- a/3rdparty/libprocess/src/tests/process_tests.cpp >>> > +++ b/3rdparty/libprocess/src/tests/process_tests.cpp >>> > @@ -1425,8 +1425,8 @@ TEST(Process, remote) >>> > sockaddr_in addr; >>> > memset(&addr, 0, sizeof(addr)); >>> > addr.sin_family = PF_INET; >>> > - addr.sin_port = htons(process.self().port); >>> > - addr.sin_addr.s_addr = process.self().ip; >>> > + addr.sin_port = htons(process.self().node.port); >>> > + addr.sin_addr.s_addr = process.self().node.ip; >>> > >>> > ASSERT_EQ(0, connect(s, (sockaddr*) &addr, sizeof(addr))); >>> > >>> > @@ -1866,7 +1866,7 @@ TEST(Process, PercentEncodedURLs) >>> > spawn(process); >>> > >>> > // Construct the PID using percent-encoding. >>> > - UPID pid("id%2842%29", process.self().ip, process.self().port); >>> > + UPID pid("id%2842%29", process.self().node); >>> > >>> > // Mimic a libprocess message sent to an installed handler. >>> > Future<Nothing> handler1; >>> > >>> > >>> >> >> >> >> -- >> Dominic Hamon | @mrdo | Twitter >> *There are no bad ideas; only good ideas that go horribly wrong.* >> > > > > -- > Dominic Hamon | @mrdo | Twitter > *There are no bad ideas; only good ideas that go horribly wrong.* > -- Dominic Hamon | @mrdo | Twitter *There are no bad ideas; only good ideas that go horribly wrong.*
