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
1.2099 06/02/14 08:09:45 jonas@stripped +11 -0
Merge joreland@stripped:/home/bk/mysql-5.1-ndb-new
into perch.ndb.mysql.com:/home/jonas/src/51-ndb
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
1.15 06/02/14 08:09:42 jonas@stripped +0 -1
merge
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
1.104 06/02/14 08:08:31 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
1.96 06/02/14 08:08:31 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/tsman.cpp
1.8 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/pgman.hpp
1.6 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/pgman.cpp
1.10 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/lgman.cpp
1.11 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
1.54 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
1.15 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
1.79 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp
1.28 06/02/14 08:08:30 jonas@stripped +0 -0
Auto merged
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: jonas
# Host: perch.ndb.mysql.com
# Root: /home/jonas/src/51-ndb/RESYNC
--- 1.10/storage/ndb/src/kernel/blocks/lgman.cpp 2006-02-13 13:12:42 +01:00
+++ 1.11/storage/ndb/src/kernel/blocks/lgman.cpp 2006-02-14 08:08:30 +01:00
@@ -280,6 +280,16 @@
waiter.p->m_size,
2*File_formats::UNDO_PAGE_WORDS);
}
+ if (!ptr.p->m_log_sync_waiters.isEmpty())
+ {
+ LocalDLFifoList<Log_waiter>
+ list(m_log_waiter_pool, ptr.p->m_log_sync_waiters);
+ Ptr<Log_waiter> waiter;
+ list.first(waiter);
+ infoEvent(" m_last_synced_lsn: %lld: %d head(waiters).m_sync_lsn: %lld",
+ ptr.p->m_last_synced_lsn,
+ waiter.p->m_sync_lsn);
+ }
m_logfile_group_list.next(ptr);
}
}
--- 1.9/storage/ndb/src/kernel/blocks/pgman.cpp 2006-02-13 13:12:42 +01:00
+++ 1.10/storage/ndb/src/kernel/blocks/pgman.cpp 2006-02-14 08:08:30 +01:00
@@ -70,7 +70,6 @@
addRecSignal(GSN_FSWRITEREF, &Pgman::execFSWRITEREF, true);
addRecSignal(GSN_FSWRITECONF, &Pgman::execFSWRITECONF);
- addRecSignal(GSN_LCP_PREPARE_REQ, &Pgman::execLCP_PREPARE_REQ);
addRecSignal(GSN_LCP_FRAG_ORD, &Pgman::execLCP_FRAG_ORD);
addRecSignal(GSN_END_LCP_REQ, &Pgman::execEND_LCP_REQ);
@@ -224,20 +223,20 @@
jam();
do_lcp_loop(signal);
break;
- case PgmanContinueB::LCP_PREPARE:
+ case PgmanContinueB::LCP_LOCKED:
{
jam();
Ptr<Page_entry> ptr;
Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
- pl.getPtr(ptr, data1);
- if (pl.next(ptr))
+ if (data1 != RNIL)
{
- process_lcp_prepare(signal, ptr);
+ pl.getPtr(ptr, data1);
+ process_lcp_locked(signal, ptr);
}
else
{
- signal->theData[0] = 0;
- sendSignal(DBLQH_REF, GSN_LCP_PREPARE_CONF, signal, 1, JBB);
+ signal->theData[0] = m_end_lcp_req.senderData;
+ sendSignal(m_end_lcp_req.senderRef, GSN_END_LCP_CONF, signal, 1, JBB);
}
return;
}
@@ -1105,79 +1104,6 @@
// LCP
-void
-Pgman::execLCP_PREPARE_REQ(Signal* signal)
-{
- jamEntry();
-
- /**
- * Reserve pages for all LOCKED pages...
- */
- Ptr<Page_entry> ptr;
- Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
- if (pl.first(ptr))
- {
- process_lcp_prepare(signal, ptr);
- }
- else
- {
- signal->theData[0] = 0;
- sendSignal(DBLQH_REF, GSN_LCP_PREPARE_CONF, signal, 1, JBB);
- }
-}
-
-void
-Pgman::process_lcp_prepare(Signal* signal, Ptr<Page_entry> ptr)
-{
- ndbrequire(ptr.p->m_copy_page_i == RNIL);
-
- Ptr<GlobalPage> copy;
- ndbrequire(m_global_page_pool.seize(copy));
- ptr.p->m_copy_page_i = copy.i;
-
- signal->theData[0] = PgmanContinueB::LCP_PREPARE;
- signal->theData[1] = ptr.i;
- sendSignal(PGMAN_REF, GSN_CONTINUEB, signal, 2, JBB);
-}
-
-int
-Pgman::create_copy_page(Ptr<Page_entry> ptr, Uint32 req_flags)
-{
- if (! (req_flags & DIRTY_FLAGS) && ! (ptr.p->m_state & Page_entry::COPY))
- {
- return ptr.p->m_real_page_i;
- }
- if (! (ptr.p->m_state & Page_entry::COPY))
- {
- ptr.p->m_state |= Page_entry::COPY;
-
- Ptr<GlobalPage> src;
- Ptr<GlobalPage> copy;
- m_global_page_pool.getPtr(src, ptr.p->m_real_page_i);
- m_global_page_pool.getPtr(copy, ptr.p->m_copy_page_i);
- memcpy(copy.p, src.p, sizeof(GlobalPage));
- }
- return ptr.p->m_copy_page_i;
-}
-
-void
-Pgman::restore_copy_page(Ptr<Page_entry> ptr)
-{
- Uint32 copyPtrI = ptr.p->m_copy_page_i;
- if (ptr.p->m_state & Page_entry::COPY)
- {
- Ptr<GlobalPage> src;
- Ptr<GlobalPage> copy;
- m_global_page_pool.getPtr(src, ptr.p->m_real_page_i);
- m_global_page_pool.getPtr(copy, copyPtrI);
- memcpy(src.p, copy.p, sizeof(GlobalPage));
- }
-
- m_global_page_pool.release(copyPtrI);
-
- ptr.p->m_state &= ~Page_entry::COPY;
- ptr.p->m_copy_page_i = RNIL;
-}
void
Pgman::execLCP_FRAG_ORD(Signal* signal)
@@ -1251,7 +1177,8 @@
DBG_LCP("LCP " << ptr << " - ");
if (ptr.p->m_last_lcp < m_last_lcp &&
- (state & Page_entry::DIRTY))
+ (state & Page_entry::DIRTY) &&
+ (! (state & Page_entry::LOCKED)))
{
if(! (state & Page_entry::BOUND))
{
@@ -1262,8 +1189,8 @@
{
DBG_LCP(" BUSY" << endl);
break; // wait for it
- }
- if (state & Page_entry::PAGEOUT)
+ }
+ else if (state & Page_entry::PAGEOUT)
{
DBG_LCP(" PAGEOUT -> state |= LCP" << endl);
set_page_state(ptr, state | Page_entry::LCP);
@@ -1279,11 +1206,6 @@
ptr.p->m_last_lcp = m_last_lcp;
m_lcp_outstanding++;
}
- else if (ptr.p->m_copy_page_i != RNIL)
- {
- DBG_LCP(" NOT DIRTY" << endl);
- restore_copy_page(ptr);
- }
else
{
DBG_LCP(" NOT DIRTY" << endl);
@@ -1296,16 +1218,68 @@
if (m_lcp_curr_bucket == ~(Uint32)0 && !m_lcp_outstanding)
{
- DBG_LCP("GSN_END_LCP_CONF" << endl);
- signal->theData[0] = m_end_lcp_req.senderData;
- sendSignal(m_end_lcp_req.senderRef, GSN_END_LCP_CONF, signal, 1, JBB);
- m_lcp_curr_bucket = ~(Uint32)0;
+ Ptr<Page_entry> ptr;
+ Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
+ if (pl.first(ptr))
+ {
+ process_lcp_locked(signal, ptr);
+ }
+ else
+ {
+ signal->theData[0] = m_end_lcp_req.senderData;
+ sendSignal(m_end_lcp_req.senderRef, GSN_END_LCP_CONF, signal, 1, JBB);
+ }
return false;
}
-
+
return true;
}
+void
+Pgman::process_lcp_locked(Signal* signal, Ptr<Page_entry> ptr)
+{
+ ptr.p->m_last_lcp = m_last_lcp;
+ if (ptr.p->m_state & Page_entry::DIRTY)
+ {
+ Ptr<GlobalPage> org, copy;
+ ndbrequire(m_global_page_pool.seize(copy));
+ m_global_page_pool.getPtr(org, ptr.p->m_real_page_i);
+ memcpy(copy.p, org.p, sizeof(GlobalPage));
+ ptr.p->m_copy_page_i = copy.i;
+
+ m_lcp_outstanding++;
+ ptr.p->m_state |= Page_entry::LCP;
+ pageout(signal, ptr);
+ return;
+ }
+
+ Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
+ pl.next(ptr);
+
+ signal->theData[0] = PgmanContinueB::LCP_LOCKED;
+ signal->theData[1] = ptr.i;
+ sendSignal(reference(), GSN_CONTINUEB, signal, 2, JBB);
+}
+
+void
+Pgman::process_lcp_locked_fswriteconf(Signal* signal, Ptr<Page_entry> ptr)
+{
+ Ptr<GlobalPage> org, copy;
+ m_global_page_pool.getPtr(copy, ptr.p->m_copy_page_i);
+ m_global_page_pool.getPtr(org, ptr.p->m_real_page_i);
+ memcpy(org.p, copy.p, sizeof(GlobalPage));
+ m_global_page_pool.release(copy);
+
+ ptr.p->m_copy_page_i = RNIL;
+
+ Page_sublist& pl = *m_page_sublist[Page_entry::SL_LOCKED];
+ pl.next(ptr);
+
+ signal->theData[0] = PgmanContinueB::LCP_LOCKED;
+ signal->theData[1] = ptr.i;
+ sendSignal(reference(), GSN_CONTINUEB, signal, 2, JBB);
+}
+
// page read and write
void
@@ -1427,18 +1401,16 @@
ndbrequire(m_stats.m_current_io_waits > 0);
m_stats.m_current_io_waits--;
- if (ptr.p->m_copy_page_i != RNIL)
- {
- jam();
- restore_copy_page(ptr);
- state &= ~ Page_entry::COPY;
- }
-
if (state & Page_entry::LCP)
{
ndbrequire(m_lcp_outstanding);
m_lcp_outstanding--;
state &= ~ Page_entry::LCP;
+
+ if (ptr.p->m_copy_page_i != RNIL)
+ {
+ process_lcp_locked_fswriteconf(signal, ptr);
+ }
}
set_page_state(ptr, state);
@@ -1592,9 +1564,9 @@
! (req_flags & Page_request::UNLOCK_PAGE))
{
ptr.p->m_state |= (req_flags & DIRTY_FLAGS ? Page_entry::DIRTY : 0);
- if (m_lcp_loop_on && ptr.p->m_copy_page_i != RNIL)
+ if (ptr.p->m_copy_page_i != RNIL)
{
- return create_copy_page(ptr, req_flags);
+ return ptr.p->m_copy_page_i;
}
return ptr.p->m_real_page_i;
--- 1.5/storage/ndb/src/kernel/blocks/pgman.hpp 2006-02-13 13:12:42 +01:00
+++ 1.6/storage/ndb/src/kernel/blocks/pgman.hpp 2006-02-14 08:08:30 +01:00
@@ -305,7 +305,6 @@
,PAGEIN = 0x0100 // paging in
,PAGEOUT = 0x0200 // paging out
,LOGSYNC = 0x0400 // undo WAL as part of pageout
- ,COPY = 0x0800 // Copy page for LCP
,LCP = 0x1000 // page is LCP flushed
,HOT = 0x2000 // page is hot
,ONSTACK = 0x4000 // page is on LIRS stack
@@ -419,7 +418,6 @@
void execREAD_CONFIG_REQ(Signal* signal);
void execCONTINUEB(Signal* signal);
- void execLCP_PREPARE_REQ(Signal* signal);
void execLCP_FRAG_ORD(Signal*);
void execEND_LCP_REQ(Signal*);
@@ -462,9 +460,8 @@
void move_cleanup_ptr(Ptr<Page_entry> ptr);
bool process_lcp(Signal*);
- void process_lcp_prepare(Signal* signal, Ptr<Page_entry> ptr);
- int create_copy_page(Ptr<Page_entry>, Uint32 req_flags);
- void restore_copy_page(Ptr<Page_entry>);
+ void process_lcp_locked(Signal* signal, Ptr<Page_entry> ptr);
+ void process_lcp_locked_fswriteconf(Signal* signal, Ptr<Page_entry> ptr);
void pagein(Signal*, Ptr<Page_entry>);
void fsreadreq(Signal*, Ptr<Page_entry>);
--- 1.7/storage/ndb/src/kernel/blocks/tsman.cpp 2006-02-13 13:12:43 +01:00
+++ 1.8/storage/ndb/src/kernel/blocks/tsman.cpp 2006-02-14 08:08:30 +01:00
@@ -1779,7 +1779,7 @@
/**
* Handling of unmapped extent header pages is not implemented
*/
- int flags = 0;
+ int flags = Page_cache_client::DIRTY_REQ;
int real_page_id;
if ((real_page_id = m_page_cache_client.get_page(signal, preq, flags)) > 0)
{
@@ -1807,30 +1807,19 @@
lsn += page->m_page_header.m_page_lsn_hi; lsn <<= 32;
lsn += page->m_page_header.m_page_lsn_lo;
- if (undo_lsn <= lsn)
+ /**
+ * Toggle word
+ */
+ if (DBG_UNDO)
{
- /**
- * Toggle word
- */
- if (DBG_UNDO)
- ndbout_c("tsman: apply %lld(%lld) %x -> %x",
- undo_lsn, lsn, src, (bits | (bits << UNCOMMITTED_SHIFT)));
-
- lsn = undo_lsn;
- page->m_page_header.m_page_lsn_hi = lsn >> 32;
- page->m_page_header.m_page_lsn_lo = lsn & 0xFFFFFFFF;
- ndbassert((bits & ~(COMMITTED_MASK)) == 0);
- header->update_free_bits(page_no_in_extent,
- bits | (bits << UNCOMMITTED_SHIFT));
-
- m_page_cache_client.update_lsn(preq.m_page, lsn);
- }
- else
- {
- if (DBG_UNDO)
- ndbout_c("tsman: apply %lld(%lld) %x -> %x",
- undo_lsn, lsn, src, (bits | (bits << UNCOMMITTED_SHIFT)));
+ ndbout << "tsman: apply " << undo_lsn << "(" << lsn << ") "
+ << *key << " " << (src & COMMITTED_MASK)
+ << " -> " << bits << endl;
}
+
+ ndbassert((bits & ~(COMMITTED_MASK)) == 0);
+ header->update_free_bits(page_no_in_extent,
+ bits | (bits << UNCOMMITTED_SHIFT));
return 0;
}
--- 1.27/storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp 2006-02-09 11:34:38 +01:00
+++ 1.28/storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp 2006-02-14 08:08:30 +01:00
@@ -606,7 +606,7 @@
typedef Ptr<Tabrec> TabrecPtr;
public:
- Dbacc(const class Configuration &);
+ Dbacc(Block_context&);
virtual ~Dbacc();
// pointer to TUP instance in this thread
--- 1.78/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2006-02-10 17:54:25 +01:00
+++ 1.79/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2006-02-14 08:08:30 +01:00
@@ -1476,8 +1476,8 @@
/* ---------------------------------------------------------------- */
/* **************************************************************** */
-Dbdict::Dbdict(const class Configuration & conf):
- SimulatedBlock(DBDICT, conf),
+Dbdict::Dbdict(Block_context& ctx):
+ SimulatedBlock(DBDICT, ctx),
c_attributeRecordHash(c_attributeRecordPool),
c_file_hash(c_file_pool),
c_filegroup_hash(c_filegroup_pool),
@@ -1504,10 +1504,6 @@
{
BLOCK_CONSTRUCTOR(Dbdict);
- const ndb_mgm_configuration_iterator * p = conf.getOwnConfigIterator();
- ndbrequire(p != 0);
-
- ndb_mgm_get_int_parameter(p, CFG_DB_NO_TRIGGERS, &c_maxNoOfTriggers);
// Transit signals
addRecSignal(GSN_DUMP_STATE_ORD, &Dbdict::execDUMP_STATE_ORD);
addRecSignal(GSN_GET_TABINFOREQ, &Dbdict::execGET_TABINFOREQ);
@@ -2019,10 +2015,12 @@
jamEntry();
const ndb_mgm_configuration_iterator * p =
- theConfiguration.getOwnConfigIterator();
+ m_ctx.m_config.getOwnConfigIterator();
ndbrequire(p != 0);
Uint32 attributesize, tablerecSize;
+ ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_TRIGGERS,
+ &c_maxNoOfTriggers));
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DICT_ATTRIBUTE,&attributesize));
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DICT_TABLE, &tablerecSize));
--- 1.14/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp 2006-02-10 17:54:26 +01:00
+++ 1.15/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp 2006-02-14 08:08:30 +01:00
@@ -21,7 +21,6 @@
#include <pc.hpp>
#include <SimulatedBlock.hpp>
#include "Sysfile.hpp"
-#include <ArrayList.hpp>
#include <SignalCounter.hpp>
#include <signaldata/MasterLCP.hpp>
@@ -570,7 +569,7 @@
typedef Ptr<TakeOverRecord> TakeOverRecordPtr;
public:
- Dbdih(const class Configuration &);
+ Dbdih(Block_context& ctx);
virtual ~Dbdih();
struct RWFragment {
@@ -1554,13 +1553,13 @@
* Pool/list of WaitGCPProxyRecord record
*/
ArrayPool<WaitGCPProxyRecord> waitGCPProxyPool;
- ArrayList<WaitGCPProxyRecord> c_waitGCPProxyList;
+ DLList<WaitGCPProxyRecord> c_waitGCPProxyList;
/**
* Pool/list of WaitGCPMasterRecord record
*/
ArrayPool<WaitGCPMasterRecord> waitGCPMasterPool;
- ArrayList<WaitGCPMasterRecord> c_waitGCPMasterList;
+ DLList<WaitGCPMasterRecord> c_waitGCPMasterList;
void checkWaitGCPProxy(Signal*, NodeId failedNodeId);
void checkWaitGCPMaster(Signal*, NodeId failedNodeId);
--- 1.53/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2006-02-11 22:38:05 +01:00
+++ 1.54/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2006-02-14 08:08:30 +01:00
@@ -1063,7 +1063,7 @@
jamEntry();
const ndb_mgm_configuration_iterator * p =
- theConfiguration.getOwnConfigIterator();
+ m_ctx.m_config.getOwnConfigIterator();
ndbrequireErr(p != 0, NDBD_EXIT_INVALID_CONFIG);
initData();
@@ -1149,7 +1149,7 @@
{
jamEntry();
cntrlblockref = signal->theData[0];
- if(theConfiguration.getInitialStart()){
+ if(m_ctx.m_config.getInitialStart()){
sendSignal(cntrlblockref, GSN_DIH_RESTARTREF, signal, 1, JBB);
} else {
readGciFileLab(signal);
@@ -11461,7 +11461,7 @@
memset(&sysfileData[0], 0, sizeof(sysfileData));
const ndb_mgm_configuration_iterator * p =
- theConfiguration.getOwnConfigIterator();
+ m_ctx.m_config.getOwnConfigIterator();
ndbrequire(p != 0);
c_lcpState.clcpDelay = 20;
--- 1.95/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2006-02-14 08:01:50 +01:00
+++ 1.96/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2006-02-14 08:08:31 +01:00
@@ -882,13 +882,27 @@
jamEntry();
const ndb_mgm_configuration_iterator * p =
- theConfiguration.getOwnConfigIterator();
+ m_ctx.m_config.getOwnConfigIterator();
ndbrequire(p != 0);
cnoLogFiles = 8;
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_REDOLOG_FILES,
&cnoLogFiles));
ndbrequire(cnoLogFiles > 0);
+
+ Uint32 log_page_size= 0;
+ ndb_mgm_get_int_parameter(p, CFG_DB_REDO_BUFFER,
+ &log_page_size);
+
+ /**
+ * Always set page size in half MBytes
+ */
+ clogPageFileSize= (log_page_size / sizeof(LogPageRecord));
+ Uint32 mega_byte_part= clogPageFileSize & 15;
+ if (mega_byte_part != 0) {
+ jam();
+ clogPageFileSize+= (16 - mega_byte_part);
+ }
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_LQH_TABLE, &ctabrecFileSize));
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_LQH_TC_CONNECT,
--- 1.103/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp 2006-02-13 13:12:42 +01:00
+++ 1.104/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp 2006-02-14 08:08:31 +01:00
@@ -3027,7 +3027,7 @@
/* NODE IF POSSIBLE TO AVOID UNNECESSARY COMMUNICATION */
/* WITH SIMPLE READS. */
/*-------------------------------------------------------------*/
- arrGuard(tnoOfBackup, 4);
+ arrGuard(tnoOfBackup, MAX_REPLICAS);
UintR Tindex;
UintR TownNode = cownNodeid;
for (Tindex = 1; Tindex <= tnoOfBackup; Tindex++) {
@@ -6306,7 +6306,7 @@
jam();
tcConnectptr.i = apiConnectptr.p->currentTcConnect;
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
- arrGuard(apiConnectptr.p->currentReplicaNo, 4);
+ arrGuard(apiConnectptr.p->currentReplicaNo, MAX_REPLICAS);
hostptr.i = tcConnectptr.p->tcNodedata[apiConnectptr.p->currentReplicaNo];
ptrCheckGuard(hostptr, chostFilesize, hostRecord);
if (hostptr.p->hostStatus == HS_ALIVE) {
@@ -6332,7 +6332,7 @@
jam();
tcConnectptr.i = apiConnectptr.p->currentTcConnect;
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
- arrGuard(apiConnectptr.p->currentReplicaNo, 4);
+ arrGuard(apiConnectptr.p->currentReplicaNo, MAX_REPLICAS);
hostptr.i = tcConnectptr.p->tcNodedata[apiConnectptr.p->currentReplicaNo];
ptrCheckGuard(hostptr, chostFilesize, hostRecord);
if (hostptr.p->hostStatus == HS_ALIVE) {
@@ -6358,7 +6358,7 @@
jam();
tcConnectptr.i = apiConnectptr.p->currentTcConnect;
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
- arrGuard(apiConnectptr.p->currentReplicaNo, 4);
+ arrGuard(apiConnectptr.p->currentReplicaNo, MAX_REPLICAS);
hostptr.i = tcConnectptr.p->tcNodedata[apiConnectptr.p->currentReplicaNo];
ptrCheckGuard(hostptr, chostFilesize, hostRecord);
if (hostptr.p->hostStatus == HS_ALIVE) {
@@ -6495,7 +6495,7 @@
// in time to the ABORT signal we will declare it as dead.
/*------------------------------------------------------------------*/
UintR Ti = 0;
- arrGuard(tcConnectptr.p->noOfNodes, 4);
+ arrGuard(tcConnectptr.p->noOfNodes, MAX_REPLICAS+1);
for (Ti = 0; Ti < tcConnectptr.p->noOfNodes; Ti++) {
jam();
if (tcConnectptr.p->tcNodedata[Ti] != 0) {
@@ -7552,7 +7552,7 @@
warningReport(signal, 18);
return;
}//if
- arrGuard(apiConnectptr.p->currentReplicaNo, 4);
+ arrGuard(apiConnectptr.p->currentReplicaNo, MAX_REPLICAS);
if (tcConnectptr.p->tcNodedata[apiConnectptr.p->currentReplicaNo] !=
tnodeid) {
warningReport(signal, 19);
@@ -7568,7 +7568,7 @@
do {
if (tcurrentReplicaNo != (Uint8)Z8NIL) {
jam();
- arrGuard(tcurrentReplicaNo, 4);
+ arrGuard(tcurrentReplicaNo, MAX_REPLICAS);
const LqhTransConf::OperationStatus stat =
(LqhTransConf::OperationStatus)
tcConnectptr.p->failData[tcurrentReplicaNo];
@@ -7702,7 +7702,7 @@
warningReport(signal, 10);
return;
}//if
- arrGuard(apiConnectptr.p->currentReplicaNo, 4);
+ arrGuard(apiConnectptr.p->currentReplicaNo, MAX_REPLICAS);
if (tcConnectptr.p->tcNodedata[apiConnectptr.p->currentReplicaNo] !=
tnodeid) {
warningReport(signal, 11);
@@ -7722,7 +7722,7 @@
do {
if (tcurrentReplicaNo != (Uint8)Z8NIL) {
jam();
- arrGuard(tcurrentReplicaNo, 4);
+ arrGuard(tcurrentReplicaNo, MAX_REPLICAS);
switch (tcConnectptr.p->failData[tcurrentReplicaNo]) {
case LqhTransConf::InvalidStatus:
jam();
@@ -7847,7 +7847,7 @@
warningReport(signal, 14);
return;
}//if
- arrGuard(apiConnectptr.p->currentReplicaNo, 4);
+ arrGuard(apiConnectptr.p->currentReplicaNo, MAX_REPLICAS);
if (tcConnectptr.p->tcNodedata[apiConnectptr.p->currentReplicaNo] !=
tnodeid) {
warningReport(signal, 15);
@@ -7867,7 +7867,7 @@
do {
if (tcurrentReplicaNo != (Uint8)Z8NIL) {
jam();
- arrGuard(tcurrentReplicaNo, 4);
+ arrGuard(tcurrentReplicaNo, MAX_REPLICAS);
switch (tcConnectptr.p->failData[tcurrentReplicaNo]) {
case LqhTransConf::InvalidStatus:
jam();
@@ -8156,6 +8156,7 @@
case OS_PREPARED:
case OS_COMMITTING:
jam();
+ arrGuard(tcConnectptr.p->lastReplicaNo, MAX_REPLICAS);
for (tindex = 0; tindex <= tcConnectptr.p->lastReplicaNo; tindex++) {
jam();
/*-------------------------------------------------------------------
@@ -8163,13 +8164,13 @@
* IN THIS CASE ALL LQH'S ARE PREPARED AND WAITING FOR
* COMMIT/ABORT DECISION.
*------------------------------------------------------------------*/
- arrGuard(tindex, 4);
tcConnectptr.p->failData[tindex] = LqhTransConf::Prepared;
}//for
break;
case OS_COMMITTED:
case OS_COMPLETING:
jam();
+ arrGuard(tcConnectptr.p->lastReplicaNo, MAX_REPLICAS);
for (tindex = 0; tindex <= tcConnectptr.p->lastReplicaNo; tindex++) {
jam();
/*-------------------------------------------------------------------
@@ -8177,19 +8178,18 @@
* IN THIS CASE ALL LQH'S ARE COMMITTED AND WAITING FOR
* COMPLETE MESSAGE.
*------------------------------------------------------------------*/
- arrGuard(tindex, 4);
tcConnectptr.p->failData[tindex] = LqhTransConf::Committed;
}//for
break;
case OS_COMPLETED:
jam();
+ arrGuard(tcConnectptr.p->lastReplicaNo, MAX_REPLICAS);
for (tindex = 0; tindex <= tcConnectptr.p->lastReplicaNo; tindex++) {
jam();
/*-------------------------------------------------------------------
* KEYDATA IS USED TO KEEP AN INDICATION OF STATE IN LQH.
* IN THIS CASE ALL LQH'S ARE COMPLETED.
*-------------------------------------------------------------------*/
- arrGuard(tindex, 4);
tcConnectptr.p->failData[tindex] = LqhTransConf::InvalidStatus;
}//for
break;
--- 1.14/storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp 2006-02-13 13:12:42 +01:00
+++ 1.15/storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp 2006-02-14 08:09:42 +01:00
@@ -56,7 +56,7 @@
if (ptr->m_header_bits & Tuple_header::LCP_KEEP)
{
- ndbassert(ptr->m_header_bits & Tuple_header::FREED);
+ ndbassert(! (ptr->m_header_bits & Tuple_header::FREED));
ptr->m_header_bits |= Tuple_header::FREED;
return;
}
| Thread |
|---|
| • bk commit into 5.1 tree (jonas:1.2099) | jonas | 14 Feb |