diff options
author | Eliot Horowitz <eliot@10gen.com> | 2010-02-21 10:40:34 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2010-02-21 10:40:34 -0500 |
commit | 8cd3f5b5d4480346cdb20abb6113d182eb8aa656 (patch) | |
tree | 1b0f4257282a55dd347cb8b72d9b2ae1674e609f | |
parent | c75c00cfa8752a804e911b2a9d4057cea523dd4b (diff) | |
download | mongo-8cd3f5b5d4480346cdb20abb6113d182eb8aa656.tar.gz |
slightly stupid way to make memory on indexing not so bad for 1.2 SERVER-651
-rw-r--r-- | db/extsort.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/db/extsort.cpp b/db/extsort.cpp index 751c63e650f..0f317f7a00c 100644 --- a/db/extsort.cpp +++ b/db/extsort.cpp @@ -88,10 +88,20 @@ namespace mongo { _cur = new InMemory(); } - _cur->push_back( pair<BSONObj,DiskLoc>( o.getOwned() , loc ) ); + BSONObj toadd = o; + if ( toadd.isOwned() ){ + // hack to handle buffer problems + if ( toadd.objsize() < 100 ) + toadd = toadd.copy(); + } + else { + toadd = toadd.getOwned(); + } + + _cur->push_back( pair<BSONObj,DiskLoc>( o , loc ) ); long size = o.objsize(); - _curSizeSoFar += size + sizeof( DiskLoc ); + _curSizeSoFar += size + sizeof( DiskLoc ) + sizeof( BSONObj ); if ( _curSizeSoFar > _maxFilesize ) finishMap(); |