2817 Christopher Powers 2008-09-10
Bug #39350 Falcon: Releasing deferred indexes causes crash
Removed new DeferredIndex reference counts in Transaction and DeferredIndexWalker.
modified:
storage/falcon/DeferredIndex.cpp
storage/falcon/DeferredIndexWalker.cpp
storage/falcon/Transaction.cpp
2816 Christopher Powers 2008-09-09
Bug#39350 Falcon: Releasing deferred indexes causes crash
Minor changes per code review
modified:
storage/falcon/Transaction.cpp
=== modified file 'storage/falcon/DeferredIndex.cpp'
--- a/storage/falcon/DeferredIndex.cpp 2008-09-10 04:02:07 +0000
+++ b/storage/falcon/DeferredIndex.cpp 2008-09-10 06:42:49 +0000
@@ -840,7 +840,7 @@ void DeferredIndex::detachTransaction(vo
else
sync.unlock();
- //releaseRef();
+ releaseRef();
}
void DeferredIndex::chill(Dbb *dbb)
=== modified file 'storage/falcon/DeferredIndexWalker.cpp'
--- a/storage/falcon/DeferredIndexWalker.cpp 2008-09-10 04:02:07 +0000
+++ b/storage/falcon/DeferredIndexWalker.cpp 2008-09-10 06:42:49 +0000
@@ -31,7 +31,6 @@ DeferredIndexWalker::DeferredIndexWalker
void DeferredIndexWalker::initialize(DeferredIndex *deferredIdx, IndexKey *indexKey, int
searchFlags)
{
deferredIndex = deferredIdx;
- deferredIndex->addRef();
currentNode = NULL;
DIBucket *bucket = (DIBucket*) deferredIndex->root;
nodePending = true;
@@ -95,8 +94,6 @@ void DeferredIndexWalker::initialize(Def
DeferredIndexWalker::~DeferredIndexWalker(void)
{
- if (deferredIndex)
- deferredIndex->releaseRef();
}
DINode* DeferredIndexWalker::next(void)
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2008-09-10 04:37:47 +0000
+++ b/storage/falcon/Transaction.cpp 2008-09-10 06:42:49 +0000
@@ -1317,7 +1317,6 @@ void Transaction::add(DeferredIndex* def
Sync sync(&syncDeferredIndexes, "Transaction::add");
sync.lock(Exclusive);
- deferredIndex->addRef();
deferredIndex->nextInTransaction = deferredIndexes;
deferredIndexes = deferredIndex;
deferredIndexCount++;
@@ -1503,7 +1502,6 @@ void Transaction::releaseDeferredIndexes
{
ASSERT(deferredIndex->transaction == this);
deferredIndexes = deferredIndex->nextInTransaction;
- deferredIndex->releaseRef();
deferredIndexCount--;
}
}
@@ -1519,7 +1517,6 @@ void Transaction::releaseDeferredIndexes
{
*ptr = deferredIndex->nextInTransaction;
deferredIndex->detachTransaction();
- deferredIndex->releaseRef();
--deferredIndexCount;
}
else
| Thread |
|---|
| • bzr push into mysql-6.0-falcon branch (cpowers:2816 to 2817) Bug#39350 | Christopher Powers | 10 Sep |