summaryrefslogtreecommitdiff
path: root/jstests/aggregation/bugs/server17224.js
blob: 888c99b808c621a5e988c01b56218a264c5df161 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SERVER-17224 An aggregation result with exactly the right size could crash the server rather than
//              returning an error.
(function() {
    'use strict';

    var t = db.server17224;
    t.drop();

    // first 63MB
    for (var i = 0; i < 63; i++) {
        t.insert({a: new Array(1024 * 1024 + 1).join('a')});
    }

    // the remaining ~1MB with room for field names and other overhead
    t.insert({a: new Array(1024 * 1024 - 1105).join('a')});

    // do not use cursor form, since it has a different workaroud for this issue.
    assert.commandFailed(db.runCommand({
        aggregate: t.getName(),
        pipeline: [{$match: {}}, {$group: {_id: null, arr: {$push: {a: '$a'}}}}]
    }));

    // Make sure the server is still up.
    assert.commandWorked(db.runCommand('ping'));
}());