From 5ea42fb2ea6be5c4496e0077f30cac1d5a03f8ca Mon Sep 17 00:00:00 2001 From: "jonas@perch.ndb.mysql.com" <> Date: Tue, 13 Mar 2007 21:03:34 +0100 Subject: [PATCH] ndb - bug#27102 Make sure head after undo execute does not point to last page of file As this will confuse next write to group --- storage/ndb/src/kernel/blocks/lgman.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/storage/ndb/src/kernel/blocks/lgman.cpp b/storage/ndb/src/kernel/blocks/lgman.cpp index d61dc422556..59b95f4e97f 100644 --- a/storage/ndb/src/kernel/blocks/lgman.cpp +++ b/storage/ndb/src/kernel/blocks/lgman.cpp @@ -2924,6 +2924,25 @@ Lgman::stop_run_undo_log(Signal* signal) ptr.p->m_file_pos[TAIL] = tail; init_logbuffer_pointers(ptr); + + { + Buffer_idx head= ptr.p->m_file_pos[HEAD]; + Ptr file; + m_file_pool.getPtr(file, head.m_ptr_i); + if (head.m_idx == file.p->m_file_size - 1) + { + Local_undofile_list files(m_file_pool, ptr.p->m_files); + if(!files.next(file)) + { + jam(); + files.first(file); + } + head.m_idx = 0; + head.m_ptr_i = file.i; + ptr.p->m_file_pos[HEAD] = head; + } + } + ptr.p->m_free_file_words = (Uint64)File_formats::UNDO_PAGE_WORDS * (Uint64)compute_free_file_pages(ptr); ptr.p->m_next_reply_ptr_i = ptr.p->m_file_pos[HEAD].m_ptr_i;