From: Date: July 13 2005 4:07pm Subject: bk commit into 4.1 tree (tomas:1.2341) BUG#11596 List-Archive: http://lists.mysql.com/internals/26990 X-Bug: 11596 Message-Id: <20050713140738.5ACDF1F316F@poseidon.mysql.com> Below is the list of changes that have just been committed into a local 4.1 repository of tomas. When tomas does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet 1.2341 05/07/13 16:07:29 tomas@stripped +6 -0 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. ndb/src/mgmsrv/MgmtSrvr.hpp 1.26 05/07/13 16:07:25 tomas@stripped +1 -1 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. ndb/src/mgmsrv/MgmtSrvr.cpp 1.60 05/07/13 16:07:25 tomas@stripped +18 -0 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. ndb/src/common/transporter/TransporterRegistry.cpp 1.27 05/07/13 16:07:25 tomas@stripped +6 -0 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. ndb/src/common/transporter/Transporter.hpp 1.7 05/07/13 16:07:25 tomas@stripped +1 -0 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. ndb/src/common/transporter/Transporter.cpp 1.13 05/07/13 16:07:25 tomas@stripped +15 -0 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. ndb/include/transporter/TransporterRegistry.hpp 1.9 05/07/13 16:07:25 tomas@stripped +2 -0 BUG#11596 (partial fix), IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart) This patch fixes it for the ndbd nodes. The mysqld/api nodes will still not have the IP-address shown. # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: tomas # Host: poseidon.ndb.mysql.com # Root: /home/tomas/mysql-4.1 --- 1.8/ndb/include/transporter/TransporterRegistry.hpp 2005-05-25 16:19:14 +02:00 +++ 1.9/ndb/include/transporter/TransporterRegistry.hpp 2005-07-13 16:07:25 +02:00 @@ -238,6 +238,8 @@ }; Vector m_transporter_interface; void add_transporter_interface(const char *interf, unsigned short port); + + struct in_addr get_connect_address(NodeId node_id) const; protected: private: --- 1.12/ndb/src/common/transporter/Transporter.cpp 2004-12-22 16:28:56 +01:00 +++ 1.13/ndb/src/common/transporter/Transporter.cpp 2005-07-13 16:07:25 +02:00 @@ -74,6 +74,7 @@ m_connected = false; m_timeOutMillis = 1000; + m_connect_address.s_addr= 0; if (isServer) m_socket_client= 0; else @@ -98,6 +99,13 @@ DBUG_RETURN(true); // TODO assert(0); } + { + struct sockaddr addr; + SOCKET_SIZE_TYPE addrlen= sizeof(addr); + int r= getpeername(sockfd, &addr, &addrlen); + m_connect_address= ((struct sockaddr_in *)&addr)->sin_addr; + } + bool res = connect_server_impl(sockfd); if(res){ m_connected = true; @@ -162,6 +170,13 @@ else if (m_type == tt_SHM_TRANSPORTER) { g_eventLogger.warning("Unable to verify transporter compatability with node %d", nodeId); + } + + { + struct sockaddr addr; + SOCKET_SIZE_TYPE addrlen= sizeof(addr); + int r= getpeername(sockfd, &addr, &addrlen); + m_connect_address= ((struct sockaddr_in *)&addr)->sin_addr; } bool res = connect_client_impl(sockfd); --- 1.6/ndb/src/common/transporter/Transporter.hpp 2005-05-25 16:19:14 +02:00 +++ 1.7/ndb/src/common/transporter/Transporter.hpp 2005-07-13 16:07:25 +02:00 @@ -122,6 +122,7 @@ private: SocketClient *m_socket_client; + struct in_addr m_connect_address; protected: Uint32 getErrorCount(); --- 1.26/ndb/src/common/transporter/TransporterRegistry.cpp 2005-05-25 16:19:14 +02:00 +++ 1.27/ndb/src/common/transporter/TransporterRegistry.cpp 2005-07-13 16:07:25 +02:00 @@ -51,6 +51,12 @@ #include extern EventLogger g_eventLogger; +struct in_addr +TransporterRegistry::get_connect_address(NodeId node_id) const +{ + return theTransporters[node_id]->m_connect_address; +} + SocketServer::Session * TransporterService::newSession(NDB_SOCKET_TYPE sockfd) { DBUG_ENTER("SocketServer::Session * TransporterService::newSession"); --- 1.59/ndb/src/mgmsrv/MgmtSrvr.cpp 2005-04-22 09:07:22 +02:00 +++ 1.60/ndb/src/mgmsrv/MgmtSrvr.cpp 2005-07-13 16:07:25 +02:00 @@ -2124,6 +2124,24 @@ return nodeTypes[nodeId]; } +const char *MgmtSrvr::get_connect_address(Uint32 node_id) +{ + if (m_connect_address[node_id].s_addr == 0 && + theFacade && theFacade->theTransporterRegistry && + theFacade->theClusterMgr && + getNodeType(node_id) == NDB_MGM_NODE_TYPE_NDB) + { + const ClusterMgr::Node &node= + theFacade->theClusterMgr->getNodeInfo(node_id); + if (node.connected) + { + m_connect_address[node_id]= + theFacade->theTransporterRegistry->get_connect_address(node_id); + } + } + return inet_ntoa(m_connect_address[node_id]); +} + void MgmtSrvr::get_connected_nodes(NodeBitmask &connected_nodes) const { --- 1.25/ndb/src/mgmsrv/MgmtSrvr.hpp 2005-04-22 09:07:22 +02:00 +++ 1.26/ndb/src/mgmsrv/MgmtSrvr.hpp 2005-07-13 16:07:25 +02:00 @@ -508,7 +508,7 @@ int setDbParameter(int node, int parameter, const char * value, BaseString&); - const char *get_connect_address(Uint32 node_id) { return inet_ntoa(m_connect_address[node_id]); } + const char *get_connect_address(Uint32 node_id); void get_connected_nodes(NodeBitmask &connected_nodes) const; SocketServer *get_socket_server() { return m_socket_server; }