diff options
author | Eliot Horowitz <eliot@10gen.com> | 2011-05-26 21:25:47 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2011-05-26 21:25:47 -0400 |
commit | a23295b084353800481caf00c92bea1ec024b664 (patch) | |
tree | 6d269d7d6aaed5b60fce8ac74ba0e1e443a346a6 | |
parent | 47840f05d29a3e63a402740e5914f2c803f3bda1 (diff) | |
download | mongo-a23295b084353800481caf00c92bea1ec024b664.tar.gz |
fix spinlock deadlock
Conflicts:
s/d_migrate.cpp
-rw-r--r-- | s/d_migrate.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/s/d_migrate.cpp b/s/d_migrate.cpp index ff4842ed869..df12e54b962 100644 --- a/s/d_migrate.cpp +++ b/s/d_migrate.cpp @@ -450,8 +450,6 @@ namespace mongo { maxRecsWhenFull = numeric_limits<long long>::max(); } - scoped_spinlock lk( _trackerLocks ); - // do a full traversal of the chunk and don't stop even if we think it is a large chunk // we want the number of records to better report, in that case bool isLargeChunk = false; @@ -459,6 +457,7 @@ namespace mongo { while ( cc->ok() ) { DiskLoc dl = cc->currLoc(); if ( ! isLargeChunk ) { + scoped_spinlock lk( _trackerLocks ); _cloneLocs.insert( dl ); } cc->advance(); @@ -485,7 +484,10 @@ namespace mongo { return false; } - log() << "moveChunk number of documents: " << _cloneLocs.size() << endl; + { + scoped_spinlock lk( _trackerLocks ); + log() << "moveChunk number of documents: " << _cloneLocs.size() << endl; + } return true; } |