diff options
author | unknown <stewart@mysql.com[stewart]> | 2007-03-22 22:35:31 +1100 |
---|---|---|
committer | unknown <stewart@mysql.com[stewart]> | 2007-03-22 22:35:31 +1100 |
commit | 09bbc265078a601bb1056389b358a8a8828b33fc (patch) | |
tree | ea5e6cbe9b27e275095ce8e9af5591a6b3c123cd /storage | |
parent | a69b2aa7d4fae14cb042e32df3d005aa90c406c9 (diff) | |
download | mariadb-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')
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>; |