Commit aa9a3a69 authored by jonas@perch.ndb.mysql.com's avatar jonas@perch.ndb.mysql.com

Merge perch.ndb.mysql.com:/home/jonas/src/50-ndb

into  perch.ndb.mysql.com:/home/jonas/src/51-ndb
parents 6131fa09 f16b8a19
...@@ -326,16 +326,18 @@ Backup::execCONTINUEB(Signal* signal) ...@@ -326,16 +326,18 @@ Backup::execCONTINUEB(Signal* signal)
ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr); ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr);
FsBuffer & buf = filePtr.p->operation.dataBuffer; FsBuffer & buf = filePtr.p->operation.dataBuffer;
if(buf.getFreeSize() + buf.getMinRead() < buf.getUsableSize()) { if(buf.getFreeSize() < buf.getMaxWrite()) {
jam(); jam();
TablePtr tabPtr LINT_SET_PTR; TablePtr tabPtr LINT_SET_PTR;
c_tablePool.getPtr(tabPtr, Tdata2); c_tablePool.getPtr(tabPtr, Tdata2);
DEBUG_OUT("Backup - Buffer full - " << buf.getFreeSize() DEBUG_OUT("Backup - Buffer full - "
<< " + " << buf.getMinRead() << buf.getFreeSize()
<< " < " << buf.getUsableSize() << " < " << buf.getMaxWrite()
<< " - tableId = " << tabPtr.p->tableId); << " (sz: " << buf.getUsableSize()
<< " getMinRead: " << buf.getMinRead()
<< ") - tableId = " << tabPtr.p->tableId);
signal->theData[0] = BackupContinueB::BUFFER_FULL_META; signal->theData[0] = BackupContinueB::BUFFER_FULL_META;
signal->theData[1] = Tdata1; signal->theData[1] = Tdata1;
signal->theData[2] = Tdata2; signal->theData[2] = Tdata2;
......
...@@ -557,8 +557,8 @@ public: ...@@ -557,8 +557,8 @@ public:
NDB_TICKS m_reset_disk_speed_time; NDB_TICKS m_reset_disk_speed_time;
static const int DISK_SPEED_CHECK_DELAY = 100; static const int DISK_SPEED_CHECK_DELAY = 100;
STATIC_CONST(NO_OF_PAGES_META_FILE = STATIC_CONST(NO_OF_PAGES_META_FILE =
(MAX_WORDS_META_FILE + BACKUP_WORDS_PER_PAGE - 1) / (2*MAX_WORDS_META_FILE + BACKUP_WORDS_PER_PAGE - 1) /
BACKUP_WORDS_PER_PAGE); BACKUP_WORDS_PER_PAGE);
/** /**
......
...@@ -46,8 +46,8 @@ public: ...@@ -46,8 +46,8 @@ public:
/** /**
* Seize element from pool - return i * Seize element from pool - return i
* *
* Note must be either added using <b>add</b> or released * Note *must* be added using <b>add</b> (even before hash.release)
* using <b>release</b> * or be released using pool
*/ */
bool seize(Ptr<T> &); bool seize(Ptr<T> &);
...@@ -360,7 +360,14 @@ DLHashTableImpl<P, T, U>::remove(Ptr<T> & ptr) ...@@ -360,7 +360,14 @@ DLHashTableImpl<P, T, U>::remove(Ptr<T> & ptr)
else else
{ {
const Uint32 hv = ptr.p->hashValue() & mask; const Uint32 hv = ptr.p->hashValue() & mask;
hashValues[hv] = next; if (hashValues[hv] == ptr.i)
{
hashValues[hv] = next;
}
else
{
// Will add assert in 5.1
}
} }
if(next != RNIL) if(next != RNIL)
...@@ -386,7 +393,14 @@ DLHashTableImpl<P, T, U>::release(Ptr<T> & ptr) ...@@ -386,7 +393,14 @@ DLHashTableImpl<P, T, U>::release(Ptr<T> & ptr)
else else
{ {
const Uint32 hv = ptr.p->hashValue() & mask; const Uint32 hv = ptr.p->hashValue() & mask;
hashValues[hv] = next; if (hashValues[hv] == ptr.i)
{
hashValues[hv] = next;
}
else
{
// Will add assert in 5.1
}
} }
if(next != RNIL) if(next != RNIL)
......
...@@ -42,8 +42,8 @@ public: ...@@ -42,8 +42,8 @@ public:
/** /**
* Seize element from pool - return i * Seize element from pool - return i
* *
* Note must be either added using <b>add</b> or released * Note *must* be added using <b>add</b> (even before hash.release)
* using <b>release</b> * or be released using pool
*/ */
bool seize(Ptr<T> &); bool seize(Ptr<T> &);
...@@ -374,7 +374,14 @@ DLHashTable2<T, U>::remove(Ptr<T> & ptr){ ...@@ -374,7 +374,14 @@ DLHashTable2<T, U>::remove(Ptr<T> & ptr){
prevP->nextHash = next; prevP->nextHash = next;
} else { } else {
const Uint32 hv = ptr.p->hashValue() & mask; const Uint32 hv = ptr.p->hashValue() & mask;
hashValues[hv] = next; if (hashValues[hv] == ptr.i)
{
hashValues[hv] = next;
}
else
{
// Will add assert in 5.1
}
} }
if(next != RNIL){ if(next != RNIL){
...@@ -395,7 +402,14 @@ DLHashTable2<T, U>::release(Ptr<T> & ptr){ ...@@ -395,7 +402,14 @@ DLHashTable2<T, U>::release(Ptr<T> & ptr){
prevP->nextHash = next; prevP->nextHash = next;
} else { } else {
const Uint32 hv = ptr.p->hashValue() & mask; const Uint32 hv = ptr.p->hashValue() & mask;
hashValues[hv] = next; if (hashValues[hv] == ptr.i)
{
hashValues[hv] = next;
}
else
{
// Will add assert in 5.1
}
} }
if(next != RNIL){ if(next != RNIL){
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment