List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:December 20 2008 8:51pm
Subject:bzr commit into mysql-5.1 branch (jonas:2795)
View as plain text  
#At file:///home/jonas/src/telco-6.3/

 2795 Jonas Oreland	2008-12-20 [merge]
      merge 62 to 63
modified:
  storage/ndb/src/kernel/blocks/lgman.cpp
  storage/ndb/test/src/NDBT_Tables.cpp

=== modified file 'storage/ndb/src/kernel/blocks/lgman.cpp'
--- a/storage/ndb/src/kernel/blocks/lgman.cpp	2008-11-18 10:21:28 +0000
+++ b/storage/ndb/src/kernel/blocks/lgman.cpp	2008-12-20 19:51:09 +0000
@@ -1386,11 +1386,13 @@ Lgman::flush_log(Signal* signal, Ptr<Log
 
       if (ptr.p->m_log_buffer_waiters.isEmpty() || ptr.p->m_outstanding_fs)
       {
+        jam();
 	force =  0;
       }
       
       if (force < 2)
       {
+        jam();
 	signal->theData[0] = LgmanContinueB::FLUSH_LOG;
 	signal->theData[1] = ptr.i;
 	signal->theData[2] = force + 1;
@@ -1400,6 +1402,7 @@ Lgman::flush_log(Signal* signal, Ptr<Log
       }
       else
       {
+        jam();
 	Buffer_idx pos= producer.m_current_pos;
 	GlobalPage *page = m_shared_page_pool.getPtr(pos.m_ptr_i);
 	
@@ -1423,7 +1426,7 @@ Lgman::flush_log(Signal* signal, Ptr<Log
 	ndbrequire(ptr.p->m_free_buffer_words > free);
 	ptr.p->m_free_file_words -= free;
 	ptr.p->m_free_buffer_words -= free;
-	
+         
 	validate_logfile_group(ptr, "force_log_flush");
 	
 	next_page(ptr.p, PRODUCER);
@@ -1444,17 +1447,25 @@ Lgman::flush_log(Signal* signal, Ptr<Log
   Uint32 tot= 0;
   while(!(consumer.m_current_page == producer.m_current_page) && !full)
   {
+    jam();
     validate_logfile_group(ptr, "before flush log");
 
     Uint32 cnt; // pages written
     Uint32 page= consumer.m_current_pos.m_ptr_i;
     if(consumer.m_current_page.m_ptr_i == producer.m_current_page.m_ptr_i)
     {
-      if(consumer.m_current_page.m_idx > producer.m_current_page.m_idx)
+      /**
+       * In same range
+       */
+      jam();
+
+      if(producer.m_current_pos.m_ptr_i > page)
       {
+        /**
+         * producer ahead of consumer in same chunk
+         */
 	jam();
-	Uint32 tmp= 
-	  consumer.m_current_page.m_idx - producer.m_current_page.m_idx;
+	Uint32 tmp= producer.m_current_pos.m_ptr_i - page;
 	cnt= write_log_pages(signal, ptr, page, tmp);
 	assert(cnt <= tmp);
 	
@@ -1464,8 +1475,9 @@ Lgman::flush_log(Signal* signal, Ptr<Log
       }
       else
       {
-	// Only 1 chunk
-	ndbrequire(ptr.p->m_buffer_pages.getSize() == 2); 
+        /**
+         * consumer ahead of producer in same chunk
+         */
 	Uint32 tmp= consumer.m_current_page.m_idx + 1;
 	cnt= write_log_pages(signal, ptr, page, tmp);
 	assert(cnt <= tmp);
@@ -1558,8 +1570,9 @@ Lgman::process_log_buffer_waiters(Signal
   bool removed= false;
   Ptr<Log_waiter> waiter;
   list.first(waiter);
+  Uint32 sz  = waiter.p->m_size;
   Uint32 logfile_group_id = ptr.p->m_logfile_group_id;
-  if(waiter.p->m_size + 2*File_formats::UNDO_PAGE_WORDS < free_buffer)
+  if(sz + 2*File_formats::UNDO_PAGE_WORDS < free_buffer)
   {
     removed= true;
     Uint32 block = waiter.p->m_block;
@@ -2064,7 +2077,6 @@ Logfile_client::add_entry(const Change* 
 	}
 	* (dst - 1) |= File_formats::Undofile::UNDO_NEXT_LSN << 16;
 	ptr.p->m_free_file_words += 2;
-	ptr.p->m_free_buffer_words += 2;
 	m_lgman->validate_logfile_group(ptr);
       }
       else

=== modified file 'storage/ndb/test/src/NDBT_Tables.cpp'
--- a/storage/ndb/test/src/NDBT_Tables.cpp	2008-11-17 09:26:25 +0000
+++ b/storage/ndb/test/src/NDBT_Tables.cpp	2008-12-20 19:48:44 +0000
@@ -868,11 +868,21 @@ NDBT_Tables::create_default_tablespace(N
   NdbDictionary::Dictionary* pDict = pNdb->getDictionary();
 
   int res;
+  Uint32 mb = 8;
+  {
+    char buf[256];
+    if (NdbEnv_GetEnv("UNDOBUFFER", buf, sizeof(buf)))
+    {
+      mb = atoi(buf);
+      ndbout_c("Using %umb dd-undo-buffer", mb);
+    }
+  }
+
   NdbDictionary::LogfileGroup lg = pDict->getLogfileGroup("DEFAULT-LG");
   if (strcmp(lg.getName(), "DEFAULT-LG") != 0)
   {
     lg.setName("DEFAULT-LG");
-    lg.setUndoBufferSize(8*1024*1024);
+    lg.setUndoBufferSize(mb*1024*1024);
     res = pDict->createLogfileGroup(lg);
     if(res != 0){
       g_err << "Failed to create logfilegroup:"
@@ -881,7 +891,7 @@ NDBT_Tables::create_default_tablespace(N
     }
   }
 
-  Uint32 mb = 96;
+  mb = 96;
   Uint32 files = 13;
 
   {

Thread
bzr commit into mysql-5.1 branch (jonas:2795) Jonas Oreland20 Dec