List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:September 13 2010 2:35pm
Subject:bzr commit into mysql-5.1-telco-7.1 branch (jonas:3800)
View as plain text  
#At file:///home/jonas/src/telco-7.1/ based on revid:bernhard.ocklin@stripped

 3800 Jonas Oreland	2010-09-13 [merge]
      ndb - merge 70 to 71

    modified:
      mysql-test/collections/default.experimental
      sql/ha_ndbcluster_binlog.cc
      storage/ndb/include/ndbapi/NdbDictionary.hpp
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
      storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
      storage/ndb/src/ndbapi/NdbDictionary.cpp
      storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp
      storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp
=== modified file 'mysql-test/collections/default.experimental'
--- a/mysql-test/collections/default.experimental	2010-03-15 09:31:35 +0000
+++ b/mysql-test/collections/default.experimental	2010-09-13 09:39:27 +0000
@@ -3,6 +3,8 @@
 
 
 binlog.binlog_unsafe @solaris            # Bug #47128 Test "binlog_unsafe" exceds default stack allocation
+rpl_ndb.rpl_ndb_typeconv_all @solaris    # bug#52131
+rpl_ndb.rpl_ndb_typeconv_lossy @solaris  # bug#52131
 
 funcs_1.charset_collation_1              # depends on compile-time decisions
 

=== modified file 'sql/ha_ndbcluster_binlog.cc'
--- a/sql/ha_ndbcluster_binlog.cc	2010-09-01 10:08:49 +0000
+++ b/sql/ha_ndbcluster_binlog.cc	2010-09-13 14:31:30 +0000
@@ -1734,6 +1734,7 @@ ndbcluster_update_slock(THD *thd,
     }
     if (trans->execute(NdbTransaction::NoCommit))
       goto err;
+
     bitmap_clear_bit(&slock, node_id);
     {
       NdbOperation *op= 0;
@@ -1768,6 +1769,7 @@ ndbcluster_update_slock(THD *thd,
     {
       DBUG_PRINT("info", ("node %d cleared lock on '%s.%s'",
                           node_id, db, table_name));
+      dict->forceGCPWait(1);
       break;
     }
   err:
@@ -2161,6 +2163,7 @@ int ndbcluster_log_schema_op(THD *thd,
     if (trans->execute(NdbTransaction::Commit) == 0)
     {
       DBUG_PRINT("info", ("logged: %s", query));
+      dict->forceGCPWait(1);
       break;
     }
 err:

=== modified file 'storage/ndb/include/ndbapi/NdbDictionary.hpp'
--- a/storage/ndb/include/ndbapi/NdbDictionary.hpp	2010-05-27 09:56:43 +0000
+++ b/storage/ndb/include/ndbapi/NdbDictionary.hpp	2010-09-13 14:31:30 +0000
@@ -2321,6 +2321,7 @@ public:
      * Force gcp and wait for gcp complete
      */
     int forceGCPWait();
+    int forceGCPWait(int type);
 #endif
 
     /** @} *******************************************************************/

=== modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2010-09-06 08:20:33 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2010-09-13 14:31:30 +0000
@@ -25078,6 +25078,9 @@ Dbdict::trans_commit_first(Signal* signa
     signal->theData[2] = gci_hi;
     signal->theData[3] = gci_lo;
     sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 20, 4);
+
+    signal->theData[0] = 6099;
+    sendSignal(DBDIH_REF, GSN_DUMP_STATE_ORD, signal, 1, JBB);
   }
   else
   {

=== modified file 'storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2010-08-17 10:11:01 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2010-09-13 14:31:30 +0000
@@ -17454,6 +17454,20 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal
     SET_ERROR_INSERT_VALUE2(7216, signal->theData[1]);
     return;
   }
+  DECLARE_DUMP0(DBDIH, 6099, "Start microgcp")
+  {
+    if (isMaster())
+    {
+      jam();
+      m_micro_gcp.m_master.m_start_time = 0;
+    }
+    else
+    {
+      jam();
+      sendSignal(cmasterdihref, GSN_DUMP_STATE_ORD, signal, 1, JBB);
+    }
+    return;
+  }
 }//Dbdih::execDUMP_STATE_ORD()
 
 void

=== modified file 'storage/ndb/src/ndbapi/NdbDictionary.cpp'
--- a/storage/ndb/src/ndbapi/NdbDictionary.cpp	2010-07-26 12:08:40 +0000
+++ b/storage/ndb/src/ndbapi/NdbDictionary.cpp	2010-09-13 14:31:30 +0000
@@ -2542,7 +2542,13 @@ NdbDictionary::Dictionary::invalidateInd
 int
 NdbDictionary::Dictionary::forceGCPWait()
 {
-  return m_impl.forceGCPWait();
+  return forceGCPWait(0);
+}
+
+int
+NdbDictionary::Dictionary::forceGCPWait(int type)
+{
+  return m_impl.forceGCPWait(type);
 }
 
 void

=== modified file 'storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp'
--- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp	2010-08-30 09:51:49 +0000
+++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp	2010-09-13 14:31:30 +0000
@@ -5760,42 +5760,72 @@ NdbDictInterface::execOLD_LIST_TABLES_CO
 }
 
 int
-NdbDictionaryImpl::forceGCPWait()
+NdbDictionaryImpl::forceGCPWait(int type)
 {
-  return m_receiver.forceGCPWait();
+  return m_receiver.forceGCPWait(type);
 }
 
 int
-NdbDictInterface::forceGCPWait()
+NdbDictInterface::forceGCPWait(int type)
 {
   NdbApiSignal tSignal(m_reference);
-  WaitGCPReq* const req = CAST_PTR(WaitGCPReq, tSignal.getDataPtrSend());
-  req->senderRef = m_reference;
-  req->senderData = 0;
-  req->requestType = WaitGCPReq::CompleteForceStart;
-  tSignal.theReceiversBlockNumber = DBDIH;
-  tSignal.theVerId_signalNumber = GSN_WAIT_GCP_REQ;
-  tSignal.theLength = WaitGCPReq::SignalLength;
-
-  const Uint32 RETRIES = 100;
-  for (Uint32 i = 0; i < RETRIES; i++)
-  {
-    m_transporter->lock_mutex();
-    Uint16 aNodeId = m_transporter->get_an_alive_node();
-    if (aNodeId == 0) {
-      m_error.code= 4009;
+  if (type == 0)
+  {
+    WaitGCPReq* const req = CAST_PTR(WaitGCPReq, tSignal.getDataPtrSend());
+    req->senderRef = m_reference;
+    req->senderData = 0;
+    req->requestType = WaitGCPReq::CompleteForceStart;
+    tSignal.theReceiversBlockNumber = DBDIH;
+    tSignal.theVerId_signalNumber = GSN_WAIT_GCP_REQ;
+    tSignal.theLength = WaitGCPReq::SignalLength;
+
+    const Uint32 RETRIES = 100;
+    for (Uint32 i = 0; i < RETRIES; i++)
+    {
+      m_transporter->lock_mutex();
+      Uint16 aNodeId = m_transporter->get_an_alive_node();
+      if (aNodeId == 0) {
+        m_error.code= 4009;
+        m_transporter->unlock_mutex();
+        return -1;
+      }
+      if (m_transporter->sendSignal(&tSignal, aNodeId) != 0) {
+        m_transporter->unlock_mutex();
+        continue;
+      }
+
+      m_error.code= 0;
+      m_waiter.m_node = aNodeId;
+      m_waiter.m_state = WAIT_LIST_TABLES_CONF;
+      m_waiter.wait(DICT_WAITFOR_TIMEOUT);
       m_transporter->unlock_mutex();
-      return -1;
+      return 0;
     }
-    if (m_transporter->sendSignal(&tSignal, aNodeId) != 0) {
+    return -1;
+  }
+  else if (type == 1)
+  {
+    tSignal.getDataPtrSend()[0] = 6099;
+    tSignal.theReceiversBlockNumber = DBDIH;
+    tSignal.theVerId_signalNumber = GSN_DUMP_STATE_ORD;
+    tSignal.theLength = 1;
+
+    const Uint32 RETRIES = 100;
+    for (Uint32 i = 0; i < RETRIES; i++)
+    {
+      m_transporter->lock_mutex();
+      Uint16 aNodeId = m_transporter->get_an_alive_node();
+      if (aNodeId == 0) {
+        m_error.code= 4009;
+        m_transporter->unlock_mutex();
+        return -1;
+      }
+      if (m_transporter->sendSignal(&tSignal, aNodeId) != 0) {
+        m_transporter->unlock_mutex();
+        continue;
+      }
       m_transporter->unlock_mutex();
-      continue;
     }
-    m_error.code= 0;
-    m_waiter.m_node = aNodeId;
-    m_waiter.m_state = WAIT_LIST_TABLES_CONF;
-    m_waiter.wait(DICT_WAITFOR_TIMEOUT);
-    m_transporter->unlock_mutex();    
     return 0;
   }
   return -1;

=== modified file 'storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp'
--- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp	2010-07-26 12:08:40 +0000
+++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp	2010-09-13 14:31:30 +0000
@@ -658,7 +658,7 @@ public:
 			  LinearSectionPtr ptr[3],
 			  Uint32 noOfSections, bool fullyQualifiedNames);
 
-  int forceGCPWait();
+  int forceGCPWait(int type);
 
   static int parseTableInfo(NdbTableImpl ** dst, 
 			    const Uint32 * data, Uint32 len,
@@ -833,7 +833,7 @@ public:
   int executeSubscribeEvent(NdbEventOperationImpl &, Uint32 & buckets);
   int stopSubscribeEvent(NdbEventOperationImpl &);
 
-  int forceGCPWait();
+  int forceGCPWait(int type);
 
   int listObjects(List& list, NdbDictionary::Object::Type type, 
                   bool fullyQualified);


Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20100913143515-2n43qu1r0sndz535.bundle
Thread
bzr commit into mysql-5.1-telco-7.1 branch (jonas:3800) Jonas Oreland13 Sep