From 3faeee39ad4aba409145ecdada7beea27d771b5c Mon Sep 17 00:00:00 2001 From: prabatuty Date: Sat, 4 Jun 2011 16:30:55 +0000 Subject: [PATCH] tree index releases Ist level mutex twice during unique contraint path --- src/storage/DbMgrIndexImpl.cxx | 3 ++- src/storage/TreeIndex.cxx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/storage/DbMgrIndexImpl.cxx b/src/storage/DbMgrIndexImpl.cxx index b1ca3571..67950621 100644 --- a/src/storage/DbMgrIndexImpl.cxx +++ b/src/storage/DbMgrIndexImpl.cxx @@ -384,8 +384,9 @@ DbRetVal DatabaseManagerImpl::createTreeIndex(const char *indName, const char *t rv = createIndexNodeForRecords(tblName, tupleptr, chunk); if (rv != OK) { - dropIndex(indName); + //dropIndex again takes checkpoint mutex so releasing it here systemDatabase_->releaseCheckpointMutex(); + dropIndex(indName); return rv; } systemDatabase_->releaseCheckpointMutex(); diff --git a/src/storage/TreeIndex.cxx b/src/storage/TreeIndex.cxx index 3830fe8a..053e3dbb 100644 --- a/src/storage/TreeIndex.cxx +++ b/src/storage/TreeIndex.cxx @@ -783,7 +783,7 @@ DbRetVal TreeNode::insertRecordIntoNodeAndArrangeFirstLevel(Database * db, Index if (info->isUnique) { iter->mutex_.releaseShareLock(db->procSlot); - fstLevel->mutex_.releaseShareLock(db->procSlot); + //fstLevel->mutex_.releaseShareLock(db->procSlot); printError(ErrUnique, "Unique constraint violation"); return ErrUnique; } -- 2.11.4.GIT