From: magnus.blaudd Date: May 23 2011 2:05pm Subject: bzr commit into mysql-5.1-telco-7.0 branch (magnus.blaudd:4403) Bug#12581954 List-Archive: http://lists.mysql.com/commits/137862 X-Bug: 12581954 Message-Id: <20110523140513.C8FE2134079@pilot> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8767856152034470045==" --===============8767856152034470045== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/msvensson/mysql/bug11885602/7.0/ based on revid:magnus.blaudd@stripped 4403 magnus.blaudd@stripped 2011-05-23 Bug#12581954 - ndbinfo need to reload its cache of ndbinfo tables during online upgrade - When upgrading the MySQL Servers in a cluster before the datanodes, the ndbinfo API does not flush it's cache of ndbinfo tables and columns. Only full disconnect of the cluster is currently detected. And of course restarting the MySQL Server - Make ndbinfo api detect when the "min db version" of cluster has changed. modified: storage/ndb/include/ndbapi/ndb_cluster_connection.hpp storage/ndb/src/ndbapi/NdbInfo.cpp storage/ndb/src/ndbapi/NdbInfo.hpp storage/ndb/src/ndbapi/TransporterFacade.hpp storage/ndb/src/ndbapi/ndb_cluster_connection.cpp storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp === modified file 'storage/ndb/include/ndbapi/ndb_cluster_connection.hpp' --- a/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp 2011-02-04 17:52:38 +0000 +++ b/storage/ndb/include/ndbapi/ndb_cluster_connection.hpp 2011-05-23 14:05:08 +0000 @@ -192,6 +192,7 @@ public: unsigned max_nodegroup(); unsigned node_id(); unsigned get_connect_count() const; + unsigned get_min_db_version() const; void init_get_next_node(Ndb_cluster_connection_node_iter &iter); unsigned int get_next_node(Ndb_cluster_connection_node_iter &iter); === modified file 'storage/ndb/src/ndbapi/NdbInfo.cpp' --- a/storage/ndb/src/ndbapi/NdbInfo.cpp 2011-02-02 00:40:07 +0000 +++ b/storage/ndb/src/ndbapi/NdbInfo.cpp 2011-05-23 14:05:08 +0000 @@ -23,6 +23,7 @@ NdbInfo::NdbInfo(class Ndb_cluster_conne const char* prefix, const char* dbname, const char* table_prefix) : m_connect_count(connection->get_connect_count()), + m_min_db_version(0), m_connection(connection), m_tables_table(NULL), m_columns_table(NULL), m_prefix(prefix), @@ -270,7 +271,9 @@ bool NdbInfo::load_tables() } // After sucessfull load of the tables, set connect count + // and the min db version of cluster m_connect_count = m_connection->get_connect_count(); + m_min_db_version = m_connection->get_min_db_version(); return true; } @@ -328,12 +331,14 @@ void NdbInfo::flush_tables() bool NdbInfo::check_tables() { - if (m_connection->get_connect_count() != m_connect_count) + if (unlikely(m_connection->get_connect_count() != m_connect_count || + m_connection->get_min_db_version() != m_min_db_version)) { - // Connect count has changed -> flush the cached table definitions + // Connect count or min db version of cluster has changed + // -> flush the cached table definitions flush_tables(); } - if (m_tables.entries() <= NUM_HARDCODED_TABLES) + if (unlikely(m_tables.entries() <= NUM_HARDCODED_TABLES)) { // Global table cache is not loaded yet or has been // flushed, try to load it === modified file 'storage/ndb/src/ndbapi/NdbInfo.hpp' --- a/storage/ndb/src/ndbapi/NdbInfo.hpp 2011-02-02 00:40:07 +0000 +++ b/storage/ndb/src/ndbapi/NdbInfo.hpp 2011-05-23 14:05:08 +0000 @@ -89,8 +89,6 @@ public: bool init(void); ~NdbInfo(); - void flush_tables(); - int openTable(const char* table_name, const Table**); int openTable(Uint32 tableId, const Table**); void closeTable(const Table* table); @@ -103,6 +101,7 @@ public: private: static const size_t NUM_HARDCODED_TABLES = 2; unsigned m_connect_count; + unsigned m_min_db_version; class Ndb_cluster_connection* m_connection; pthread_mutex_t m_mutex; HashMap m_tables; @@ -119,6 +118,7 @@ private: bool load_hardcoded_tables(void); bool load_tables(); bool check_tables(); + void flush_tables(); BaseString mysql_table_name(const char* table_name) const; === modified file 'storage/ndb/src/ndbapi/TransporterFacade.hpp' --- a/storage/ndb/src/ndbapi/TransporterFacade.hpp 2011-02-24 07:47:22 +0000 +++ b/storage/ndb/src/ndbapi/TransporterFacade.hpp 2011-05-23 14:05:08 +0000 @@ -303,6 +303,12 @@ unsigned Ndb_cluster_connection_impl::ge } inline +unsigned Ndb_cluster_connection_impl::get_min_db_version() const +{ + return m_transporter_facade->getMinDbNodeVersion(); +} + +inline bool TransporterFacade::get_node_alive(NodeId n) const { if (theClusterMgr) === modified file 'storage/ndb/src/ndbapi/ndb_cluster_connection.cpp' --- a/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp 2011-04-15 06:29:59 +0000 +++ b/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp 2011-05-23 14:05:08 +0000 @@ -332,6 +332,11 @@ unsigned Ndb_cluster_connection::get_con return m_impl.get_connect_count(); } +unsigned Ndb_cluster_connection::get_min_db_version() const +{ + return m_impl.get_min_db_version(); +} + int Ndb_cluster_connection::get_latest_error() const { return m_impl.m_latest_error; === modified file 'storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp' --- a/storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp 2011-02-04 17:52:38 +0000 +++ b/storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp 2011-05-23 14:05:08 +0000 @@ -67,6 +67,7 @@ class Ndb_cluster_connection_impl : publ Uint32 get_next_alive_node(Ndb_cluster_connection_node_iter &iter); inline unsigned get_connect_count() const; + inline unsigned get_min_db_version() const; public: inline Uint64 *get_latest_trans_gci() { return &m_latest_trans_gci; } --===============8767856152034470045== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/magnus.blaudd@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: magnus.blaudd@stripped\ # n138x9hzgspgadzs # target_branch: file:///home/msvensson/mysql/bug11885602/7.0/ # testament_sha1: 12636f36985cf7c017930e66880e93f69bb5f26e # timestamp: 2011-05-23 16:05:13 +0200 # base_revision_id: magnus.blaudd@stripped\ # gh0ten733aj3k3xg # # Begin bundle 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 HmazVI5AHA5n7bnH+xdyRThQkHFoeRU= --===============8767856152034470045==--