diff options
author | Aaron <aaron@10gen.com> | 2010-03-22 13:57:59 -0700 |
---|---|---|
committer | Aaron <aaron@10gen.com> | 2010-03-22 13:57:59 -0700 |
commit | 4912b401063f65ec79ad585e3406ca51dfd7d501 (patch) | |
tree | 548d3aec442ef19cb1c5208f0f8c542f38d62ef4 /db | |
parent | 97275707db0f0bf80f81245ee72857b1ef237300 (diff) | |
download | mongo-4912b401063f65ec79ad585e3406ca51dfd7d501.tar.gz |
SERVER-615 more precise extent skipping calculation
Diffstat (limited to 'db')
-rw-r--r-- | db/dbcommands.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/db/dbcommands.cpp b/db/dbcommands.cpp index a8d826dc682..6d1aa5a80eb 100644 --- a/db/dbcommands.cpp +++ b/db/dbcommands.cpp @@ -1188,12 +1188,11 @@ namespace mongo { string toNs = string( realDbName ) + "." + to; NamespaceDetails *nsd = nsdetails( fromNs.c_str() ); massert( 10301 , "source collection " + fromNs + " does not exist", nsd ); - long long excessSize = nsd->datasize - size * 2; + long long excessSize = nsd->datasize - size * 2; // datasize and extentSize can't be compared exactly, so add some padding to 'size' DiskLoc extent = nsd->firstExtent; - for( ; excessSize > 0 && extent != nsd->lastExtent; extent = extent.ext()->xnext ) { + for( ; excessSize > extent.ext()->length && extent != nsd->lastExtent; extent = extent.ext()->xnext ) { excessSize -= extent.ext()->length; - if ( excessSize > 0 ) - log( 2 ) << "cloneCollectionAsCapped skipping extent of size " << extent.ext()->length << endl; + log( 2 ) << "cloneCollectionAsCapped skipping extent of size " << extent.ext()->length << endl; log( 6 ) << "excessSize: " << excessSize << endl; } DiskLoc startLoc = extent.ext()->firstRecord; |