summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorunknown <stewart@mysql.com[stewart]>2007-03-22 22:35:31 +1100
committerunknown <stewart@mysql.com[stewart]>2007-03-22 22:35:31 +1100
commit09bbc265078a601bb1056389b358a8a8828b33fc (patch)
treeea5e6cbe9b27e275095ce8e9af5591a6b3c123cd /storage
parenta69b2aa7d4fae14cb042e32df3d005aa90c406c9 (diff)
downloadmariadb-git-09bbc265078a601bb1056389b358a8a8828b33fc.tar.gz
[PATCH] WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
Default timout of 30secs for ConfigRetriever Default timout of 5sec for use by Transporter (ports etc). And Ndb_cluster_connection::set_timeout() api for setting timeout from NDBAPI applications. Should be called before connect. e.g. c.set_timeout(4200); c.connect(); Index: ndb-work/storage/ndb/include/mgmcommon/ConfigRetriever.hpp =================================================================== storage/ndb/include/mgmcommon/ConfigRetriever.hpp: WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts storage/ndb/include/ndbapi/ndb_cluster_connection.hpp: WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp: WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts storage/ndb/src/common/transporter/TransporterRegistry.cpp: WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts storage/ndb/src/ndbapi/ndb_cluster_connection.cpp: WL#3704 mgmapi timeouts: update NDBAPI usage of mgmapi for timeouts
Diffstat (limited to 'storage')
-rw-r--r--storage/ndb/include/mgmcommon/ConfigRetriever.hpp3
-rw-r--r--storage/ndb/include/ndbapi/ndb_cluster_connection.hpp18
-rw-r--r--storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp5
-rw-r--r--storage/ndb/src/common/transporter/TransporterRegistry.cpp1
-rw-r--r--storage/ndb/src/ndbapi/ndb_cluster_connection.cpp7
5 files changed, 32 insertions, 2 deletions
diff --git a/storage/ndb/include/mgmcommon/ConfigRetriever.hpp b/storage/ndb/include/mgmcommon/ConfigRetriever.hpp
index 221e24d0572..27a189c1563 100644
--- a/storage/ndb/include/mgmcommon/ConfigRetriever.hpp
+++ b/storage/ndb/include/mgmcommon/ConfigRetriever.hpp
@@ -28,7 +28,8 @@ class ConfigRetriever {
public:
ConfigRetriever(const char * _connect_string,
Uint32 version, Uint32 nodeType,
- const char * _bind_address = 0);
+ const char * _bind_address = 0,
+ int timeout_ms = 30000);
~ConfigRetriever();
int do_connect(int no_retries, int retry_delay_in_seconds, int verbose);
diff --git a/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp b/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp
index e3532b072c0..80bfe7461f8 100644
--- a/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp
+++ b/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp
@@ -62,6 +62,24 @@ public:
void set_name(const char *name);
/**
+ * Set timeout
+ *
+ * Used as a timeout when talking to the management server,
+ * helps limit the amount of time that we may block when connecting
+ *
+ * Basically just calls ndb_mgm_set_timeout(h,ms).
+ *
+ * The default is 30 seconds.
+ *
+ * @param timeout_ms millisecond timeout. As with ndb_mgm_set_timeout,
+ * only increments of 1000 are really supported,
+ * with not to much gaurentees about calls completing
+ * in any hard amount of time.
+ * @return 0 on success
+ */
+ int set_timeout(int timeout_ms);
+
+ /**
* Connect to a cluster management server
*
* @param no_retries specifies the number of retries to attempt
diff --git a/storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp b/storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp
index bcb13f38c72..35b1a91e9da 100644
--- a/storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp
+++ b/storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp
@@ -45,7 +45,8 @@
ConfigRetriever::ConfigRetriever(const char * _connect_string,
Uint32 version, Uint32 node_type,
- const char * _bindaddress)
+ const char * _bindaddress,
+ int timeout_ms)
{
DBUG_ENTER("ConfigRetriever::ConfigRetriever");
@@ -61,6 +62,8 @@ ConfigRetriever::ConfigRetriever(const char * _connect_string,
DBUG_VOID_RETURN;
}
+ ndb_mgm_set_timeout(m_handle, timeout_ms);
+
if (ndb_mgm_set_connectstring(m_handle, _connect_string))
{
BaseString tmp(ndb_mgm_get_latest_error_msg(m_handle));
diff --git a/storage/ndb/src/common/transporter/TransporterRegistry.cpp b/storage/ndb/src/common/transporter/TransporterRegistry.cpp
index 8ff95d1115e..0d4e9b49a5b 100644
--- a/storage/ndb/src/common/transporter/TransporterRegistry.cpp
+++ b/storage/ndb/src/common/transporter/TransporterRegistry.cpp
@@ -119,6 +119,7 @@ void TransporterRegistry::set_mgm_handle(NdbMgmHandle h)
if (m_mgm_handle)
ndb_mgm_destroy_handle(&m_mgm_handle);
m_mgm_handle= h;
+ ndb_mgm_set_timeout(m_mgm_handle, 5000);
#ifndef DBUG_OFF
if (h)
{
diff --git a/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp b/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp
index 24ac05caf07..a6c7c917ee2 100644
--- a/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp
+++ b/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp
@@ -666,5 +666,12 @@ Ndb_cluster_connection::get_active_ndb_objects() const
{
return m_impl.m_transporter_facade->get_active_ndb_objects();
}
+
+int Ndb_cluster_connection::set_timeout(int timeout_ms)
+{
+ return ndb_mgm_set_timeout(m_impl.m_config_retriever->get_mgmHandle(),
+ timeout_ms);
+}
+
template class Vector<Ndb_cluster_connection_impl::Node>;