summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2010-02-21 10:40:34 -0500
committerEliot Horowitz <eliot@10gen.com>2010-02-21 10:40:34 -0500
commit8cd3f5b5d4480346cdb20abb6113d182eb8aa656 (patch)
tree1b0f4257282a55dd347cb8b72d9b2ae1674e609f
parentc75c00cfa8752a804e911b2a9d4057cea523dd4b (diff)
downloadmongo-8cd3f5b5d4480346cdb20abb6113d182eb8aa656.tar.gz
slightly stupid way to make memory on indexing not so bad for 1.2 SERVER-651
-rw-r--r--db/extsort.cpp14
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();