summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authortomas@poseidon.ndb.mysql.com <>2006-02-13 14:25:31 +0100
committertomas@poseidon.ndb.mysql.com <>2006-02-13 14:25:31 +0100
commit9a3b27dae946841d0a76a61b3c03dbf07383eef9 (patch)
treedc2771c8654b352b2f85ac6a26c2c43eac7e1695 /storage
parent53a0372d87dac8fa5d550b4d4a51e35ac1cfc70b (diff)
parent4f449e4f22e7c2fb8947fb3ba001296145f4dc9a (diff)
downloadmariadb-git-9a3b27dae946841d0a76a61b3c03dbf07383eef9.tar.gz
manual merge
Diffstat (limited to 'storage')
-rw-r--r--storage/ndb/include/mgmapi/mgmapi.h8
-rw-r--r--storage/ndb/include/ndbapi/ndb_cluster_connection.hpp8
-rw-r--r--storage/ndb/src/mgmapi/mgmapi.cpp13
-rw-r--r--storage/ndb/src/mgmsrv/Services.cpp7
-rw-r--r--storage/ndb/src/ndbapi/ndb_cluster_connection.cpp30
-rw-r--r--storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp2
-rw-r--r--storage/ndb/tools/restore/consumer_restore.cpp3
-rw-r--r--storage/ndb/tools/restore/restore_main.cpp15
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;
/**