List:Commits« Previous MessageNext Message »
From:jonas Date:September 4 2007 8:58pm
Subject:bk commit into 5.1 tree (jonas:1.2583)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-09-04 22:58:21+02:00, jonas@stripped +5 -0
  ndb - micro
    fix auto discovered bugs

  storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp@stripped, 2007-09-04 22:58:18+02:00, jonas@stripped +2 -2
    renumber for consistency

  storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp@stripped, 2007-09-04 22:58:18+02:00, jonas@stripped +11 -37
    1) Make sure correct GCI is stored on disk!!
    2) increment next gci on _start_ of GCP save

  storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp@stripped, 2007-09-04 22:58:18+02:00, jonas@stripped +12 -0
    add simple gcp monitor

  storage/ndb/src/kernel/blocks/suma/Suma.cpp@stripped, 2007-09-04 22:58:18+02:00, jonas@stripped +7 -7
    Make sure never to compare gci using == as they are not always in sequence.
    Use > instead

  storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp@stripped, 2007-09-04 22:58:18+02:00, jonas@stripped +1 -0
    clear for consistency

diff -Nrup a/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp b/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
--- a/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp	2007-08-31 13:27:35 +02:00
+++ b/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp	2007-09-04 22:58:18 +02:00
@@ -1232,8 +1232,8 @@ private:
     enum State {
       GCP_SAVE_IDLE     = 0, // Idle
       GCP_SAVE_REQ      = 1, // REQ received
-      GCP_SAVE_CONF     = 3, // REF/CONF sent
-      GCP_SAVE_COPY_GCI = 4
+      GCP_SAVE_CONF     = 2, // REF/CONF sent
+      GCP_SAVE_COPY_GCI = 3
     } m_state, m_master_state;
   } m_gcp_save;
 
diff -Nrup a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
--- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2007-09-04 13:26:29 +02:00
+++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2007-09-04 22:58:18 +02:00
@@ -5329,6 +5329,7 @@ void Dbdih::execMASTER_GCPREQ(Signal* si
     saveState = MasterGCPConf::GCP_SAVE_CONF;
     break;
   case GcpSave::GCP_SAVE_COPY_GCI:
+    jam();
     saveState = MasterGCPConf::GCP_SAVE_COPY_GCI;
     break;
   }
@@ -5438,46 +5439,30 @@ void Dbdih::execMASTER_GCPCONF(Signal* s
   switch(saveState){
   case MasterGCPConf::GCP_SAVE_IDLE:
     jam();
-    ok = true;
     break;
   case MasterGCPConf::GCP_SAVE_REQ:
     jam();
-    ok = true;
     if (m_gcp_save.m_master_state == GcpSave::GCP_SAVE_IDLE)
     {
-      m_gcp_save.m_gci = saveGCI;
+      jam();
       m_gcp_save.m_master_state = GcpSave::GCP_SAVE_REQ;
     }
-    else
-    {
-      ndbrequire(m_gcp_save.m_gci == saveGCI);
-    }
     break;
   case MasterGCPConf::GCP_SAVE_CONF:
     jam();
-    ok = true;
     if (m_gcp_save.m_master_state == GcpSave::GCP_SAVE_IDLE)
     {
-      m_gcp_save.m_gci = saveGCI;
-      m_gcp_save.m_master_state = GcpSave::GCP_SAVE_CONF;
-    }
-    else if (m_gcp_save.m_master_state == GcpSave::GCP_SAVE_REQ)
-    {
-      ndbrequire(m_gcp_save.m_gci = saveGCI);
-    }
-    else if (m_gcp_save.m_master_state == GcpSave::GCP_SAVE_COPY_GCI)
-    {
-      ndbrequire(m_gcp_save.m_gci = saveGCI);
+      jam();
+      m_gcp_save.m_master_state = GcpSave::GCP_SAVE_REQ;
     }
     break;
   case MasterGCPConf::GCP_SAVE_COPY_GCI:
     jam();
-    ok= true;
     if (m_gcp_save.m_master_state == GcpSave::GCP_SAVE_IDLE)
     {
-      m_gcp_save.m_gci = saveGCI;
+      jam();
+      m_gcp_save.m_master_state = GcpSave::GCP_SAVE_COPY_GCI;
     }
-    m_gcp_save.m_master_state = GcpSave::GCP_SAVE_COPY_GCI;
     break;
 #ifndef VM_TRACE
   default:
@@ -5485,7 +5470,7 @@ void Dbdih::execMASTER_GCPCONF(Signal* s
     ndbrequire(false);
 #endif
   }
-  ndbassert(ok); // Unhandled case
+  //ndbassert(ok); // Unhandled case
 
   receiveLoopMacro(MASTER_GCPREQ, senderNodePtr.i);
   /*-------------------------------------------------------------------------*/
@@ -8212,8 +8197,11 @@ void Dbdih::execGCP_NODEFINISH(Signal* s
    * Start a save
    */
   m_gcp_save.m_master_state = GcpSave::GCP_SAVE_REQ;
-  m_gcp_save.m_gci = m_micro_gcp.m_old_gci >> 32;
+  m_gcp_save.m_gci = (m_micro_gcp.m_old_gci >> 32) - 1;
   m_gcp_save.m_start_time = now;
+  
+  m_micro_gcp.m_next_gci = Uint32(m_micro_gcp.m_next_gci >> 32) + 1;
+  m_micro_gcp.m_next_gci <<= 32;
 
 #ifdef ERROR_INSERT
   if (ERROR_INSERTED(7188))
@@ -8573,8 +8561,6 @@ Dbdih::execSUB_GCP_COMPLETE_REP(Signal* 
     ndbrequire(m_micro_gcp.m_master_state == MicroGcp::M_GCP_IDLE);
   }
   
-  printf("execSUB_GCP_COMPLETE_REP(%u/%u)", rep->gci_hi, rep->gci_lo);
-
   Uint32 masterRef = rep->senderRef;
   if (m_micro_gcp.m_state == MicroGcp::M_GCP_IDLE)
   {
@@ -8589,7 +8575,6 @@ Dbdih::execSUB_GCP_COMPLETE_REP(Signal* 
     return;
   }
 
-  ndbout_c(" - forward to suma");
   ndbrequire(m_micro_gcp.m_state == MicroGcp::M_GCP_COMMITTED);
   m_micro_gcp.m_state = MicroGcp::M_GCP_IDLE;
   EXECUTE_DIRECT(SUMA, GSN_SUB_GCP_COMPLETE_REP, signal, signal->length());
@@ -8901,17 +8886,6 @@ void Dbdih::execCOPY_GCICONF(Signal* sig
     sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);    
 
     c_newest_restorable_gci = m_gcp_save.m_gci;
-
-    Uint64 next = m_micro_gcp.m_next_gci;
-    printf("execCOPY_GCICONF: %u micros: %d next:",
-           m_gcp_save.m_gci, Uint32(next));
-    ndbassert(Uint32(next) != 0);
-    next &= ~Uint64(0xFFFFFFFF);
-    next += Uint64(1) << 32;
-    m_micro_gcp.m_next_gci = next;
-    ndbout_c(" %u/%u curr: %u/%u", Uint32(next >> 32), Uint32(next),
-             Uint32(m_micro_gcp.m_current_gci >> 32),
-             Uint32(m_micro_gcp.m_current_gci));
 
     if (m_micro_gcp.m_enabled == false)
     {
diff -Nrup a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2007-08-30 08:22:53 +02:00
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2007-09-04 22:58:18 +02:00
@@ -12125,6 +12125,11 @@ void Dblqh::setLogTail(Signal* signal, U
 /* *************** */
 /*  GCP_SAVEREQ  > */
 /* *************** */
+
+#if defined VM_TRACE || defined ERROR_INSERT
+static Uint32 m_gcp_monitor = 0;
+#endif
+
 void Dblqh::execGCP_SAVEREQ(Signal* signal) 
 {
   jamEntry();
@@ -12143,6 +12148,13 @@ void Dblqh::execGCP_SAVEREQ(Signal* sign
   const Uint32 dihPtr = saveReq->dihPtr;
   const Uint32 gci = saveReq->gci;
 
+#if defined VM_TRACE || defined ERROR_INSERT
+  ndbrequire(m_gcp_monitor == 0 || 
+             (m_gcp_monitor == gci) || 
+             (m_gcp_monitor + 1) == gci);
+  m_gcp_monitor = gci;
+#endif
+  
   if(getNodeState().startLevel >= NodeState::SL_STOPPING_4){
     GCPSaveRef * const saveRef = (GCPSaveRef*)&signal->theData[0];
     saveRef->dihPtr = dihPtr;
diff -Nrup a/storage/ndb/src/kernel/blocks/suma/Suma.cpp b/storage/ndb/src/kernel/blocks/suma/Suma.cpp
--- a/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2007-09-04 13:26:29 +02:00
+++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2007-09-04 22:58:18 +02:00
@@ -3366,7 +3366,7 @@ Suma::check_switchover(Uint32 bucket, Ui
   const Uint32 send_mask = (Bucket::BUCKET_STARTING | Bucket::BUCKET_TAKEOVER);
   bool send = c_buckets[bucket].m_state & send_mask;
   ndbassert(m_switchover_buckets.get(bucket));
-  if(unlikely(gci >= c_buckets[bucket].m_switchover_gci))
+  if(unlikely(gci > c_buckets[bucket].m_switchover_gci))
   {
     return send;
   }
@@ -3546,7 +3546,7 @@ Suma::execSUB_GCP_COMPLETE_REP(Signal* s
     Uint32 i = m_switchover_buckets.find(0);
     for(; i != Bucket_mask::NotFound; i = m_switchover_buckets.find(i + 1))
     {
-      if(c_buckets[i].m_switchover_gci == gci)
+      if(gci > c_buckets[i].m_switchover_gci)
       {
 	Uint32 state = c_buckets[i].m_state;
 	m_switchover_buckets.clear(i);
@@ -3656,7 +3656,7 @@ Suma::execSUB_GCP_COMPLETE_REP(Signal* s
     }
   }
 
-  if(gci == m_out_of_buffer_gci)
+  if(m_out_of_buffer_gci && gci > m_out_of_buffer_gci)
   {
     infoEvent("Reenable event buffer");
     m_out_of_buffer_gci = 0;
@@ -4542,7 +4542,7 @@ Suma::execSUMA_HANDOVER_REQ(Signal* sign
 	tmp.set(i);
 	m_active_buckets.clear(i);
 	m_switchover_buckets.set(i);
-	c_buckets[i].m_switchover_gci = Uint64(start_gci) << 32;
+	c_buckets[i].m_switchover_gci = (Uint64(start_gci) << 32) - 1;
 	c_buckets[i].m_state |= Bucket::BUCKET_HANDOVER;
 	c_buckets[i].m_switchover_node = nodeId;
 	ndbout_c("prepare to handover bucket: %d", i);
@@ -4592,7 +4592,7 @@ Suma::execSUMA_HANDOVER_CONF(Signal* sig
     {
       ndbrequire(get_responsible_node(i) == getOwnNodeId());
       // We should run this bucket, but _nodeId_ is
-      c_buckets[i].m_switchover_gci = Uint64(gci) << 32;
+      c_buckets[i].m_switchover_gci = (Uint64(gci) << 32) - 1;
       c_buckets[i].m_state |= Bucket::BUCKET_STARTING;
     }
   }
@@ -4753,7 +4753,7 @@ Suma::out_of_buffer_release(Signal* sign
    *   prepare for inclusion
    */
   m_out_of_buffer_gci = m_max_seen_gci > m_last_complete_gci 
-    ? m_max_seen_gci + 1 : m_last_complete_gci + 1;
+    ? m_max_seen_gci : m_last_complete_gci;
 }
 
 Uint32
@@ -4931,7 +4931,7 @@ Suma::start_resend(Signal* signal, Uint3
   g_cnt = 0;
   bucket->m_state |= (Bucket::BUCKET_TAKEOVER | Bucket::BUCKET_RESEND);
   bucket->m_switchover_node = get_responsible_node(buck);
-  bucket->m_switchover_gci = max + 1;
+  bucket->m_switchover_gci = max;
 
   m_switchover_buckets.set(buck);
   
diff -Nrup a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp
--- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp	2007-09-04 13:26:29 +02:00
+++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp	2007-09-04 22:58:18 +02:00
@@ -1132,6 +1132,7 @@ NdbEventBuffer::init_gci_containers()
   m_active_gci.fill(3, g_empty_gci_container);
   m_min_gci_index = m_max_gci_index = 1;
   Uint64 gci = 0;
+  m_known_gci.clear();
   m_known_gci.fill(7, gci);
 }
 
Thread
bk commit into 5.1 tree (jonas:1.2583)jonas4 Sep