From: Date: December 20 2008 8:51pm Subject: bzr commit into mysql-5.1 branch (jonas:2795) List-Archive: http://lists.mysql.com/commits/62188 Message-Id: <20081220195123.D89A68337AE@perch.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #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, Ptrm_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, Ptrm_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 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, Ptrm_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 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; {