diff options
author | tomas@poseidon.ndb.mysql.com <> | 2006-02-13 14:25:31 +0100 |
---|---|---|
committer | tomas@poseidon.ndb.mysql.com <> | 2006-02-13 14:25:31 +0100 |
commit | 9a3b27dae946841d0a76a61b3c03dbf07383eef9 (patch) | |
tree | dc2771c8654b352b2f85ac6a26c2c43eac7e1695 /storage | |
parent | 53a0372d87dac8fa5d550b4d4a51e35ac1cfc70b (diff) | |
parent | 4f449e4f22e7c2fb8947fb3ba001296145f4dc9a (diff) | |
download | mariadb-git-9a3b27dae946841d0a76a61b3c03dbf07383eef9.tar.gz |
manual merge
Diffstat (limited to 'storage')
-rw-r--r-- | storage/ndb/include/mgmapi/mgmapi.h | 8 | ||||
-rw-r--r-- | storage/ndb/include/ndbapi/ndb_cluster_connection.hpp | 8 | ||||
-rw-r--r-- | storage/ndb/src/mgmapi/mgmapi.cpp | 13 | ||||
-rw-r--r-- | storage/ndb/src/mgmsrv/Services.cpp | 7 | ||||
-rw-r--r-- | storage/ndb/src/ndbapi/ndb_cluster_connection.cpp | 30 | ||||
-rw-r--r-- | storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp | 2 | ||||
-rw-r--r-- | storage/ndb/tools/restore/consumer_restore.cpp | 3 | ||||
-rw-r--r-- | storage/ndb/tools/restore/restore_main.cpp | 15 |
8 files changed, 83 insertions, 3 deletions
diff --git a/storage/ndb/include/mgmapi/mgmapi.h b/storage/ndb/include/mgmapi/mgmapi.h index 9d74be5d603..75cdf60f91c 100644 --- a/storage/ndb/include/mgmapi/mgmapi.h +++ b/storage/ndb/include/mgmapi/mgmapi.h @@ -468,6 +468,14 @@ extern "C" { */ void ndb_mgm_destroy_handle(NdbMgmHandle * handle); + /** + * Set a name of the handle. Name is reported in cluster log. + * + * @param handle Management handle + * @param name Name + */ + void ndb_mgm_set_name(NdbMgmHandle handle, const char *name); + /** @} *********************************************************************/ /** * @name Functions: Connect/Disconnect Management Server diff --git a/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp b/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp index 2ecfb7ab9ad..01c700d14b2 100644 --- a/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp +++ b/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp @@ -55,6 +55,14 @@ public: ~Ndb_cluster_connection(); /** + * Set a name on the connection, which will be reported in cluster log + * + * @param name + * + */ + void set_name(const char *name); + + /** * Connect to a cluster management server * * @param no_retries specifies the number of retries to attempt diff --git a/storage/ndb/src/mgmapi/mgmapi.cpp b/storage/ndb/src/mgmapi/mgmapi.cpp index eb93ec88b6f..27e25369439 100644 --- a/storage/ndb/src/mgmapi/mgmapi.cpp +++ b/storage/ndb/src/mgmapi/mgmapi.cpp @@ -102,6 +102,7 @@ struct ndb_mgm_handle { FILE* logfile; #endif FILE *errstream; + char *m_name; }; #define SET_ERROR(h, e, s) setError(h, e, __LINE__, s) @@ -156,6 +157,7 @@ ndb_mgm_create_handle() h->write_timeout = 100; h->cfg_i = -1; h->errstream = stdout; + h->m_name = 0; strncpy(h->last_error_desc, "No error", NDB_MGM_MAX_ERR_DESC_SIZE); @@ -171,6 +173,14 @@ ndb_mgm_create_handle() } extern "C" +void +ndb_mgm_set_name(NdbMgmHandle handle, const char *name) +{ + my_free(handle->m_name, MYF(MY_ALLOW_ZERO_PTR)); + handle->m_name= my_strdup(name, MYF(MY_WME)); +} + +extern "C" int ndb_mgm_set_connectstring(NdbMgmHandle handle, const char * mgmsrv) { @@ -216,6 +226,7 @@ ndb_mgm_destroy_handle(NdbMgmHandle * handle) } #endif (*handle)->cfg.~LocalConfig(); + my_free((*handle)->m_name, MYF(MY_ALLOW_ZERO_PTR)); my_free((char*)* handle,MYF(MY_ALLOW_ZERO_PTR)); * handle = 0; DBUG_VOID_RETURN; @@ -1875,6 +1886,8 @@ ndb_mgm_alloc_nodeid(NdbMgmHandle handle, unsigned int version, int nodetype) args.put("password", "mysqld"); args.put("public key", "a public key"); args.put("endian", (endian_check.c[sizeof(long)-1])?"big":"little"); + if (handle->m_name) + args.put("name", handle->m_name); const ParserRow<ParserDummy> reply[]= { MGM_CMD("get nodeid reply", NULL, ""), diff --git a/storage/ndb/src/mgmsrv/Services.cpp b/storage/ndb/src/mgmsrv/Services.cpp index 80f0aa2eda8..3564c5c40ba 100644 --- a/storage/ndb/src/mgmsrv/Services.cpp +++ b/storage/ndb/src/mgmsrv/Services.cpp @@ -35,6 +35,7 @@ #include <base64.h> extern bool g_StopServer; +extern EventLogger g_eventLogger; static const unsigned int MAX_READ_TIMEOUT = 1000 ; static const unsigned int MAX_WRITE_TIMEOUT = 100 ; @@ -135,6 +136,7 @@ ParserRow<MgmApiSession> commands[] = { MGM_ARG("password", String, Mandatory, "Password"), MGM_ARG("public key", String, Mandatory, "Public key"), MGM_ARG("endian", String, Optional, "Endianness"), + MGM_ARG("name", String, Optional, "Name of connection"), MGM_CMD("get version", &MgmApiSession::getVersion, ""), @@ -411,6 +413,7 @@ MgmApiSession::get_nodeid(Parser_t::Context &, const char * password; const char * public_key; const char * endian= NULL; + const char * name= NULL; union { long l; char c[sizeof(long)]; } endian_check; args.get("version", &version); @@ -421,6 +424,7 @@ MgmApiSession::get_nodeid(Parser_t::Context &, args.get("password", &password); args.get("public key", &public_key); args.get("endian", &endian); + args.get("name", &name); endian_check.l = 1; if(endian @@ -489,6 +493,9 @@ MgmApiSession::get_nodeid(Parser_t::Context &, m_output->println(""); m_allocated_resources->reserve_node(tmp); + if (name) + g_eventLogger.info("Node %d: %s", tmp, name); + return; } diff --git a/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp b/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp index 405141cd143..d8d4391efb6 100644 --- a/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp +++ b/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp @@ -262,7 +262,8 @@ Ndb_cluster_connection::wait_until_ready(int timeout, Ndb_cluster_connection_impl::Ndb_cluster_connection_impl(const char * connect_string) : Ndb_cluster_connection(*this), - m_optimized_node_selection(1) + m_optimized_node_selection(1), + m_name(0) { DBUG_ENTER("Ndb_cluster_connection"); DBUG_PRINT("enter",("Ndb_cluster_connection this=0x%x", this)); @@ -287,7 +288,11 @@ Ndb_cluster_connection_impl::Ndb_cluster_connection_impl(const char * delete m_config_retriever; m_config_retriever= 0; } - + if (m_name) + { + NdbMgmHandle h= m_config_retriever->get_mgmHandle(); + ndb_mgm_set_name(h, m_name); + } m_transporter_facade= TransporterFacade::theFacadeInstance= new TransporterFacade(); @@ -326,10 +331,26 @@ Ndb_cluster_connection_impl::~Ndb_cluster_connection_impl() ndb_print_state_mutex= NULL; } #endif + if (m_name) + free(m_name); + DBUG_VOID_RETURN; } void +Ndb_cluster_connection_impl::set_name(const char *name) +{ + if (m_name) + free(m_name); + m_name= strdup(name); + if (m_config_retriever && m_name) + { + NdbMgmHandle h= m_config_retriever->get_mgmHandle(); + ndb_mgm_set_name(h, m_name); + } +} + +void Ndb_cluster_connection_impl::init_nodes_vector(Uint32 nodeid, const ndb_mgm_configuration &config) @@ -480,6 +501,11 @@ Ndb_cluster_connection_impl::do_test() delete [] nodes; } +void Ndb_cluster_connection::set_name(const char *name) +{ + m_impl.set_name(name); +} + int Ndb_cluster_connection::connect(int no_retries, int retry_delay_in_seconds, int verbose) { diff --git a/storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp b/storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp index 561babd62c1..db6e1f9e6ed 100644 --- a/storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp +++ b/storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp @@ -62,6 +62,7 @@ private: Vector<Node> m_all_nodes; void init_nodes_vector(Uint32 nodeid, const ndb_mgm_configuration &config); void connect_thread(); + void set_name(const char *name); TransporterFacade *m_transporter_facade; ConfigRetriever *m_config_retriever; @@ -69,6 +70,7 @@ private: int (*m_connect_callback)(void); int m_optimized_node_selection; + char *m_name; }; #endif diff --git a/storage/ndb/tools/restore/consumer_restore.cpp b/storage/ndb/tools/restore/consumer_restore.cpp index 200925bf8bb..e4d8f98363a 100644 --- a/storage/ndb/tools/restore/consumer_restore.cpp +++ b/storage/ndb/tools/restore/consumer_restore.cpp @@ -30,6 +30,8 @@ static Uint32 get_part_id(const NdbDictionary::Table *table, Uint32 hash_value); extern const char * g_connect_string; +extern BaseString g_options; + bool BackupRestore::init() { @@ -39,6 +41,7 @@ BackupRestore::init() return true; m_cluster_connection = new Ndb_cluster_connection(g_connect_string); + m_cluster_connection->set_name(g_options.c_str()); if(m_cluster_connection->connect(12, 5, 1) != 0) { return false; diff --git a/storage/ndb/tools/restore/restore_main.cpp b/storage/ndb/tools/restore/restore_main.cpp index 11687860bf5..87aea4d4bca 100644 --- a/storage/ndb/tools/restore/restore_main.cpp +++ b/storage/ndb/tools/restore/restore_main.cpp @@ -58,7 +58,8 @@ static int _print_log = 0; static int _restore_data = 0; static int _restore_meta = 0; static int _no_restore_disk = 0; - +BaseString g_options("ndb_restore"); + static struct my_option my_long_options[] = { NDB_STD_OPTS("ndb_restore"), @@ -450,6 +451,18 @@ main(int argc, char** argv) exitHandler(NDBT_FAILED); } + g_options.appfmt(" -b %d", ga_backupId); + g_options.appfmt(" -n %d", ga_nodeId); + if (_restore_meta) + g_options.appfmt(" -m"); + if (_restore_data) + g_options.appfmt(" -r"); + if (ga_restore_epoch) + g_options.appfmt(" -e"); + if (_restore_disk) + g_options.appfmt(" -d"); + g_options.appfmt(" -p %d", ga_nParallelism); + g_connect_string = opt_connect_str; /** |