List:Commits« Previous MessageNext Message »
From:Maitrayi Sabaratnam Date:September 25 2012 11:12am
Subject:bzr push into mysql-5.5-cluster-7.2 branch (maitrayi.sabaratnam:4009 to
4010)
View as plain text  
 4010 Maitrayi Sabaratnam	2012-09-25 [merge]
      Merge 7.1->7.2

    modified:
      storage/ndb/src/kernel/angel.cpp
      storage/ndb/src/kernel/angel.hpp
      storage/ndb/src/kernel/main.cpp
      storage/ndb/src/kernel/ndbd.cpp
      storage/ndb/src/kernel/ndbd.hpp
      storage/ndb/src/kernel/vm/Configuration.cpp
      storage/ndb/src/kernel/vm/Configuration.hpp
      storage/ndb/src/mgmapi/mgmapi.cpp
 4009 Ole John Aske	2012-09-24
      Fixed possible deadlock / timeout in ndb_spj_dict.test:
      
      This test has two parallel server connection:
      
      1) Started a (pushed) join possibly creating a lot of result rows
      2) Do some alter table DDLs which is expected to terminate query in 1)
      
      However, as 1) created a lots of result, which is sent through the client-server
      interface with a TCP 'write()', the TCP send/recv buffers may fill up. If these
      buffers became  completely filled before the query was killed by the the DDL, we
      seems to enter a deadlock state where neither the DDL is able to execute, and no
      further communication can take place. Thus, the MTR test timed out with 
      'Lost connection to the MySQL server'.
      
      This fix change to using a 'select count(*)' instead of a plain 'select *' in
      order to avoid saturated TCP buffers.

    modified:
      mysql-test/suite/ndb/r/ndb_spj_dict.result
      mysql-test/suite/ndb/t/ndb_spj_dict.test
=== modified file 'storage/ndb/src/kernel/angel.cpp'
--- a/storage/ndb/src/kernel/angel.cpp	2011-09-14 13:14:02 +0000
+++ b/storage/ndb/src/kernel/angel.cpp	2012-09-25 10:41:04 +0000
@@ -543,7 +543,9 @@ angel_run(const char* progname,
           const char* bind_address,
           bool initial,
           bool no_start,
-          bool daemon)
+          bool daemon,
+          int connnect_retries,
+          int connect_delay)
 {
   ConfigRetriever retriever(connect_str,
                             force_nodeid,
@@ -557,8 +559,6 @@ angel_run(const char* progname,
     angel_exit(1);
   }
 
-  const int connnect_retries = 12;
-  const int connect_delay = 5;
   const int verbose = 1;
   if (retriever.do_connect(connnect_retries, connect_delay, verbose) != 0)
   {
@@ -825,8 +825,6 @@ angel_run(const char* progname,
       NdbSleep_SecSleep(restart_delay_secs);
     };
 
-    const int connnect_retries = 12;
-    const int connect_delay = 5;
     const int verbose = 1;
     if (retriever.do_connect(connnect_retries, connect_delay, verbose) != 0)
     {

=== modified file 'storage/ndb/src/kernel/angel.hpp'
--- a/storage/ndb/src/kernel/angel.hpp	2011-01-30 23:13:49 +0000
+++ b/storage/ndb/src/kernel/angel.hpp	2012-09-25 10:35:15 +0000
@@ -26,7 +26,9 @@ angel_run(const char* progname,
           const char* bind_address,
           bool initial,
           bool no_start,
-          bool daemon);
+          bool daemon,
+          int connnect_retries,
+          int connect_delay);
 
 void
 angel_stop(void);

=== modified file 'storage/ndb/src/kernel/main.cpp'
--- a/storage/ndb/src/kernel/main.cpp	2012-07-05 11:19:04 +0000
+++ b/storage/ndb/src/kernel/main.cpp	2012-09-25 10:35:15 +0000
@@ -34,6 +34,8 @@ static int opt_report_fd;
 static int opt_initial;
 static int opt_no_start;
 static unsigned opt_allocated_nodeid;
+static int opt_retries;
+static int opt_delay;
 
 extern NdbNodeBitmask g_nowait_nodes;
 
@@ -86,6 +88,14 @@ static struct my_option my_long_options[
     "INTERNAL: nodeid allocated by angel process",
     (uchar**) &opt_allocated_nodeid, (uchar**) &opt_allocated_nodeid, 0,
     GET_UINT, REQUIRED_ARG, 0, 0, ~0, 0, 0, 0 },
+  { "connect-retries", 'r',
+    "Number of times mgmd is contacted at start. -1: eternal retries",
+    (uchar**) &opt_retries, (uchar**) &opt_retries, 0,
+    GET_INT, REQUIRED_ARG, 12, -1, 65535, 0, 0, 0 },
+  { "connect-delay", NDB_OPT_NOSHORT,
+    "Number of seconds between each connection attempt",
+    (uchar**) &opt_delay, (uchar**) &opt_delay, 0,
+    GET_INT, REQUIRED_ARG, 5, 0, 3600, 0, 0, 0 },
   { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
 };
 
@@ -187,7 +197,7 @@ real_main(int argc, char** argv)
     ndbd_run(opt_foreground, opt_report_fd,
              opt_ndb_connectstring, opt_ndb_nodeid, opt_bind_address,
              opt_no_start, opt_initial, opt_initialstart,
-             opt_allocated_nodeid);
+             opt_allocated_nodeid, opt_retries, opt_delay);
   }
 
   angel_run(progname,
@@ -197,7 +207,9 @@ real_main(int argc, char** argv)
             opt_bind_address,
             opt_initial,
             opt_no_start,
-            opt_daemon);
+            opt_daemon,
+            opt_retries,
+            opt_delay);
 
   return 1; // Never reached
 }

=== modified file 'storage/ndb/src/kernel/ndbd.cpp'
--- a/storage/ndb/src/kernel/ndbd.cpp	2012-02-03 11:00:32 +0000
+++ b/storage/ndb/src/kernel/ndbd.cpp	2012-09-25 10:35:15 +0000
@@ -559,7 +559,7 @@ void
 ndbd_run(bool foreground, int report_fd,
          const char* connect_str, int force_nodeid, const char* bind_address,
          bool no_start, bool initial, bool initialstart,
-         unsigned allocated_nodeid)
+         unsigned allocated_nodeid, int connect_retries, int connect_delay)
 {
 #ifdef _WIN32
   {
@@ -622,7 +622,8 @@ ndbd_run(bool foreground, int report_fd,
   }
 
   theConfig->fetch_configuration(connect_str, force_nodeid, bind_address,
-                                 allocated_nodeid);
+                                 allocated_nodeid, connect_retries,
+                                 connect_delay);
 
   if (NdbDir::chdir(NdbConfig_get_path(NULL)) != 0)
   {

=== modified file 'storage/ndb/src/kernel/ndbd.hpp'
--- a/storage/ndb/src/kernel/ndbd.hpp	2011-01-30 23:13:49 +0000
+++ b/storage/ndb/src/kernel/ndbd.hpp	2012-09-25 10:35:15 +0000
@@ -20,7 +20,7 @@ void
 ndbd_run(bool foreground, int report_fd,
          const char* connect_str, int force_nodeid, const char* bind_address,
          bool no_start, bool initial, bool initialstart,
-         unsigned allocated_nodeid);
+         unsigned allocated_nodeid, int connect_retries, int connect_delay);
 
 enum NdbShutdownType {
   NST_Normal,

=== modified file 'storage/ndb/src/kernel/vm/Configuration.cpp'
--- a/storage/ndb/src/kernel/vm/Configuration.cpp	2012-09-19 07:09:57 +0000
+++ b/storage/ndb/src/kernel/vm/Configuration.cpp	2012-09-25 11:08:50 +0000
@@ -117,7 +117,8 @@ void
 Configuration::fetch_configuration(const char* _connect_string,
                                    int force_nodeid,
                                    const char* _bind_address,
-                                   NodeId allocated_nodeid)
+                                   NodeId allocated_nodeid,
+                                   int connect_retries, int connect_delay)
 {
   /**
    * Fetch configuration from management server
@@ -144,7 +145,7 @@ Configuration::fetch_configuration(const
 	      m_config_retriever->getErrorString());
   }
 
-  if(m_config_retriever->do_connect(12,5,1) == -1){
+  if(m_config_retriever->do_connect(connect_retries, connect_delay, 1) == -1){
     const char * s = m_config_retriever->getErrorString();
     if(s == 0)
       s = "No error given!";

=== modified file 'storage/ndb/src/kernel/vm/Configuration.hpp'
--- a/storage/ndb/src/kernel/vm/Configuration.hpp	2011-09-04 17:33:04 +0000
+++ b/storage/ndb/src/kernel/vm/Configuration.hpp	2012-09-25 11:08:50 +0000
@@ -61,7 +61,8 @@ public:
 
   void fetch_configuration(const char* _connect_string, int force_nodeid,
                            const char* _bind_adress,
-                           NodeId allocated_nodeid);
+                           NodeId allocated_nodeid,
+                           int connect_retries, int connect_delay);
   void setupConfiguration();
   void closeConfiguration(bool end_session= true);
   

=== modified file 'storage/ndb/src/mgmapi/mgmapi.cpp'
--- a/storage/ndb/src/mgmapi/mgmapi.cpp	2011-10-24 13:14:28 +0000
+++ b/storage/ndb/src/mgmapi/mgmapi.cpp	2012-09-25 11:08:50 +0000
@@ -661,6 +661,9 @@ bool get_mgmd_version(NdbMgmHandle handl
 
 /**
  * Connect to a management server
+ * no_retries = 0, return immediately,
+ * no_retries < 0, retry infinitely,
+ * else retry no_retries times.
  */
 extern "C"
 int
@@ -795,6 +798,15 @@ ndb_mgm_connect(NdbMgmHandle handle, int
       }
       no_retries--;
     }
+    else
+    {
+      // no_retries < 0, retrying infinitely
+      if (verbose == -2)
+      {
+        fprintf(handle->errstream, ".");
+        fflush(handle->errstream);
+      }
+    }
     NdbSleep_SecSleep(retry_delay_in_seconds);
   }
   if (verbose == -2)

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.5-cluster-7.2 branch (maitrayi.sabaratnam:4009 to4010) Maitrayi Sabaratnam26 Sep