services.cpp
来自「MySQL源码文件5.X系列, 可自已编译到服务器」· C++ 代码 · 共 1,723 行 · 第 1/4 页
CPP
1,723 行
m_output->println(""); m_mgmsrv.m_event_listner.unlock(); DBUG_VOID_RETURN; } m_mgmsrv.m_event_listner.unlock(); { LogLevel tmp; m_mgmsrv.m_event_listner.update_max_log_level(tmp); } m_output->println(reply); m_output->println("result: Ok"); m_output->println(""); DBUG_VOID_RETURN;}voidMgmApiSession::setLogLevel(Parser<MgmApiSession>::Context &, Properties const &args) { Uint32 node = 0, level = 0, cat; BaseString errorString; SetLogLevelOrd logLevel; int result; logLevel.clear(); args.get("node", &node); args.get("category", &cat); args.get("level", &level); /* XXX should use constants for this value */ if(level > 15) { m_output->println("set loglevel reply"); m_output->println("result: Invalid loglevel", errorString.c_str()); m_output->println(""); return; } LogLevel::EventCategory category= (LogLevel::EventCategory)(cat-(int)CFG_MIN_LOGLEVEL); { LogLevel ll; ll.setLogLevel(category,level); m_mgmsrv.m_event_listner.update_max_log_level(ll); } m_output->println("set loglevel reply"); m_output->println("result: Ok"); m_output->println("");}voidMgmApiSession::stopSignalLog(Parser<MgmApiSession>::Context &, Properties const &args) { Uint32 node; args.get("node", &node); int result = m_mgmsrv.stopSignalTracing(node); m_output->println("stop signallog"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("");}voidMgmApiSession::restart_v1(Parser<MgmApiSession>::Context &, Properties const &args) { restart(args,1);}voidMgmApiSession::restart_v2(Parser<MgmApiSession>::Context &, Properties const &args) { restart(args,2);}voidMgmApiSession::restart(Properties const &args, int version) { Uint32 nostart = 0, initialstart = 0, abort = 0; char *nodes_str; Vector<NodeId> nodes; args.get("initialstart", &initialstart); args.get("nostart", &nostart); args.get("abort", &abort); args.get("node", (const char **)&nodes_str); char *p, *last; for((p = strtok_r(nodes_str, " ", &last)); p; (p = strtok_r(NULL, " ", &last))) { nodes.push_back(atoi(p)); } int restarted = 0; int result= m_mgmsrv.restartNodes(nodes, &restarted, nostart != 0, initialstart != 0, abort != 0, &m_stopSelf); m_output->println("restart reply"); if(result != 0){ m_output->println("result: %d-%s", result, get_error_text(result)); } else m_output->println("result: Ok"); m_output->println("restarted: %d", restarted); if(version>1) m_output->println("disconnect: %d", (m_stopSelf)?1:0); m_output->println("");}voidMgmApiSession::restartAll(Parser<MgmApiSession>::Context &, Properties const &args){ Uint32 nostart = 0; Uint32 initialstart = 0; Uint32 abort = 0; args.get("initialstart", &initialstart); args.get("abort", &abort); args.get("nostart", &nostart); int count = 0; int result = m_mgmsrv.restartDB(nostart, initialstart, abort, &count); m_output->println("restart reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("restarted: %d", count); m_output->println("");}static voidprintNodeStatus(OutputStream *output, MgmtSrvr &mgmsrv, enum ndb_mgm_node_type type) { NodeId nodeId = 0; mgmsrv.updateStatus(); while(mgmsrv.getNextNodeId(&nodeId, type)) { enum ndb_mgm_node_status status; Uint32 startPhase = 0, version = 0, dynamicId = 0, nodeGroup = 0, connectCount = 0; bool system; const char *address= NULL; mgmsrv.status(nodeId, &status, &version, &startPhase, &system, &dynamicId, &nodeGroup, &connectCount, &address); output->println("node.%d.type: %s", nodeId, ndb_mgm_get_node_type_string(type)); output->println("node.%d.status: %s", nodeId, ndb_mgm_get_node_status_string(status)); output->println("node.%d.version: %d", nodeId, version); output->println("node.%d.startphase: %d", nodeId, startPhase); output->println("node.%d.dynamic_id: %d", nodeId, dynamicId); output->println("node.%d.node_group: %d", nodeId, nodeGroup); output->println("node.%d.connect_count: %d", nodeId, connectCount); output->println("node.%d.address: %s", nodeId, address ? address : ""); }}voidMgmApiSession::getStatus(Parser<MgmApiSession>::Context &, Properties const &) { int noOfNodes = 0; NodeId nodeId = 0; while(m_mgmsrv.getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_NDB)){ noOfNodes++; } nodeId = 0; while(m_mgmsrv.getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_API)){ noOfNodes++; } nodeId = 0; while(m_mgmsrv.getNextNodeId(&nodeId, NDB_MGM_NODE_TYPE_MGM)){ noOfNodes++; } m_output->println("node status"); m_output->println("nodes: %d", noOfNodes); printNodeStatus(m_output, m_mgmsrv, NDB_MGM_NODE_TYPE_NDB); printNodeStatus(m_output, m_mgmsrv, NDB_MGM_NODE_TYPE_MGM); printNodeStatus(m_output, m_mgmsrv, NDB_MGM_NODE_TYPE_API); nodeId = 0; m_output->println("");}voidMgmApiSession::getInfoClusterLog(Parser<MgmApiSession>::Context &, Properties const &) { const char* names[] = { "enabled", "debug", "info", "warning", "error", "critical", "alert" }; m_output->println("clusterlog"); for(int i = 0; i < 7; i++) { m_output->println("%s: %d", names[i], m_mgmsrv.isEventLogFilterEnabled(i)); } m_output->println("");}voidMgmApiSession::stop_v1(Parser<MgmApiSession>::Context &, Properties const &args) { stop(args,1);}voidMgmApiSession::stop_v2(Parser<MgmApiSession>::Context &, Properties const &args) { stop(args,2);}voidMgmApiSession::stop(Properties const &args, int version) { Uint32 abort; char *nodes_str; Vector<NodeId> nodes; args.get("node", (const char **)&nodes_str); if(nodes_str == NULL) { m_output->println("stop reply"); m_output->println("result: empty node list"); m_output->println(""); return; } args.get("abort", &abort); char *p, *last; for((p = strtok_r(nodes_str, " ", &last)); p; (p = strtok_r(NULL, " ", &last))) { nodes.push_back(atoi(p)); } int stopped= 0; int result= 0; if (nodes.size()) result= m_mgmsrv.stopNodes(nodes, &stopped, abort != 0, &m_stopSelf); m_output->println("stop reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("stopped: %d", stopped); if(version>1) m_output->println("disconnect: %d", (m_stopSelf)?1:0); m_output->println("");}voidMgmApiSession::stopAll(Parser<MgmApiSession>::Context &, Properties const &args) { int stopped[2] = {0,0}; Uint32 abort; args.get("abort", &abort); BaseString stop; const char* tostop= "db"; int ver=1; if (args.get("stop", stop)) { tostop= stop.c_str(); ver= 2; } int result= 0; if(strstr(tostop,"db")) result= m_mgmsrv.shutdownDB(&stopped[0], abort != 0); if(!result && strstr(tostop,"mgm")) result= m_mgmsrv.shutdownMGM(&stopped[1], abort!=0, &m_stopSelf); m_output->println("stop reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("stopped: %d", stopped[0]+stopped[1]); if(ver >1) m_output->println("disconnect: %d", (m_stopSelf)?1:0); m_output->println("");}voidMgmApiSession::enterSingleUser(Parser<MgmApiSession>::Context &, Properties const &args) { int stopped = 0; Uint32 nodeId = 0; args.get("nodeId", &nodeId); int result = m_mgmsrv.enterSingleUser(&stopped, nodeId); m_output->println("enter single user reply"); if(result != 0) { m_output->println("result: %s", get_error_text(result)); } else { m_output->println("result: Ok"); } m_output->println("");}voidMgmApiSession::exitSingleUser(Parser<MgmApiSession>::Context &, Properties const &args) { int stopped = 0; int result = m_mgmsrv.exitSingleUser(&stopped, false); m_output->println("exit single user reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("");}voidMgmApiSession::startSignalLog(Parser<MgmApiSession>::Context &, Properties const &args) { Uint32 node; args.get("node", &node); int result = m_mgmsrv.startSignalTracing(node); m_output->println("start signallog reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("");}voidMgmApiSession::logSignals(Parser<MgmApiSession>::Context &, Properties const &args) { Uint32 node = 0, in = 0, out = 0; // BaseString blocks; BaseString blockList; char * blockName; args.get("node", &node); args.get("in", &in); args.get("out", &out); args.get("blocks", blockList); // fast fix - pekka char buf[200]; BaseString::snprintf(buf, 200, "%s", blockList.c_str()); Vector<BaseString> blocks; blockName=strtok(buf,"|"); while( blockName != NULL) { blocks.push_back(blockName); blockName=strtok(NULL,"|"); } if(in > 1 || out > 1) return; /* Invalid arguments */ const MgmtSrvr::LogMode modes[] = { MgmtSrvr::Off, MgmtSrvr::Out, MgmtSrvr::In, MgmtSrvr::InOut, }; MgmtSrvr::LogMode mode = modes[in<<1 | out]; int result = m_mgmsrv.setSignalLoggingMode(node, mode, blocks); m_output->println("log signals reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("");}voidMgmApiSession::start(Parser<MgmApiSession>::Context &, Properties const &args) { Uint32 node; args.get("node", &node); int result = m_mgmsrv.start(node); m_output->println("start reply"); if(result != 0) m_output->println("result: %s", get_error_text(result)); else m_output->println("result: Ok"); m_output->println("");}voidMgmApiSession::startAll(Parser<MgmApiSession>::Context &, Properties const &) { NodeId node = 0; int started = 0; while(m_mgmsrv.getNextNodeId(&node, NDB_MGM_NODE_TYPE_NDB)) if(m_mgmsrv.start(node) == 0) started++; m_output->println("start reply");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?