summaryrefslogtreecommitdiff
path: root/storage/ndb
diff options
context:
space:
mode:
authorunknown <jonas@perch.ndb.mysql.com>2006-03-01 10:15:20 +0100
committerunknown <jonas@perch.ndb.mysql.com>2006-03-01 10:15:20 +0100
commit84b87d69fbe1393ccccfc78609642619688854db (patch)
tree3b6a382e2a3e69f53b6f16b87daed4a48abcd6ce /storage/ndb
parentee9930bfa4c6cbdd15438f22dccc3a4a2c232d36 (diff)
parentd9569f9fdb12a04aedb43b77d5363e6c0781625c (diff)
downloadmariadb-git-84b87d69fbe1393ccccfc78609642619688854db.tar.gz
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into perch.ndb.mysql.com:/home/jonas/src/mysql-5.1-new
Diffstat (limited to 'storage/ndb')
-rw-r--r--storage/ndb/src/kernel/blocks/lgman.cpp18
-rw-r--r--storage/ndb/src/kernel/blocks/lgman.hpp5
2 files changed, 14 insertions, 9 deletions
diff --git a/storage/ndb/src/kernel/blocks/lgman.cpp b/storage/ndb/src/kernel/blocks/lgman.cpp
index 906c4408d3b..879d09689c4 100644
--- a/storage/ndb/src/kernel/blocks/lgman.cpp
+++ b/storage/ndb/src/kernel/blocks/lgman.cpp
@@ -839,6 +839,7 @@ Lgman::Logfile_group::Logfile_group(const CreateFilegroupImplReq* req)
m_last_lsn = 0;
m_last_synced_lsn = 0;
m_last_sync_req_lsn = 0;
+ m_max_sync_req_lsn = 0;
m_last_read_lsn = 0;
m_file_pos[0].m_ptr_i= m_file_pos[1].m_ptr_i = RNIL;
@@ -1049,8 +1050,11 @@ Logfile_client::sync_lsn(Signal* signal,
wait.p->m_sync_lsn= lsn;
memcpy(&wait.p->m_callback, &req->m_callback,
sizeof(SimulatedBlock::Callback));
- }
+ ptr.p->m_max_sync_req_lsn = lsn > ptr.p->m_max_sync_req_lsn ?
+ lsn : ptr.p->m_max_sync_req_lsn;
+ }
+
if(ptr.p->m_last_sync_req_lsn < lsn &&
! (ptr.p->m_state & Lgman::Logfile_group::LG_FORCE_SYNC_THREAD))
{
@@ -1111,16 +1115,16 @@ Lgman::force_log_sync(Signal* signal,
}
- Ptr<Lgman::Log_waiter> last;
- if(list.last(last) &&
- last.p->m_sync_lsn > force_lsn &&
- ptr.p->m_last_sync_req_lsn < last.p->m_sync_lsn)
+
+ Uint64 max_req_lsn = ptr.p->m_max_sync_req_lsn;
+ if(max_req_lsn > force_lsn &&
+ max_req_lsn > ptr.p->m_last_sync_req_lsn)
{
ndbrequire(ptr.p->m_state & Lgman::Logfile_group::LG_FORCE_SYNC_THREAD);
signal->theData[0] = LgmanContinueB::FORCE_LOG_SYNC;
signal->theData[1] = ptr.i;
- signal->theData[2] = last.p->m_sync_lsn >> 32;
- signal->theData[3] = last.p->m_sync_lsn & 0xFFFFFFFF;
+ signal->theData[2] = max_req_lsn >> 32;
+ signal->theData[3] = max_req_lsn & 0xFFFFFFFF;
sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 10, 4);
}
else
diff --git a/storage/ndb/src/kernel/blocks/lgman.hpp b/storage/ndb/src/kernel/blocks/lgman.hpp
index 143f5c8ca1c..2a20bc01df1 100644
--- a/storage/ndb/src/kernel/blocks/lgman.hpp
+++ b/storage/ndb/src/kernel/blocks/lgman.hpp
@@ -183,8 +183,9 @@ public:
Logfile_group::LG_FLUSH_THREAD;
Uint64 m_last_lsn;
- Uint64 m_last_sync_req_lsn;
- Uint64 m_last_synced_lsn;
+ Uint64 m_last_sync_req_lsn; // Outstanding
+ Uint64 m_last_synced_lsn; //
+ Uint64 m_max_sync_req_lsn; // User requested lsn
union {
Uint64 m_last_read_lsn;
Uint64 m_last_lcp_lsn;