Update mongodb to the latest version 🚀 (#5914)

* fix(package): update mongodb to version 3.3.0

* chore(package): update lockfile package-lock.json

* Fix tests

* Fix GraphQL tests for read preference

* Fix mongo adapter deprecation notice

* Fix the way the connections are checked, return promise when shutting down mongo
This commit is contained in:
greenkeeper[bot]
2019-08-14 01:25:49 +00:00
committed by peril-parse-community[bot]
parent 6760ceb836
commit 4c1be61bed
7 changed files with 170 additions and 167 deletions

42
package-lock.json generated
View File

@@ -7740,12 +7740,6 @@
} }
} }
}, },
"memory-pager": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
"optional": true
},
"merge-descriptors": { "merge-descriptors": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -7903,23 +7897,13 @@
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
}, },
"mongodb": { "mongodb": {
"version": "3.2.7", "version": "3.3.0",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.7.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.3.0.tgz",
"integrity": "sha512-2YdWrdf1PJgxcCrT1tWoL6nHuk6hCxhddAAaEh8QJL231ci4+P9FLyqopbTm2Z2sAU6mhCri+wd9r1hOcHdoMw==", "integrity": "sha512-QYa8YEN5uiJyIFdnn1vmBtiSveyygmQghsaL/RDnHqUzjGvkYe0vRg6UikCKba06cg6El/Lu7qzOYnR3vMhwlA==",
"requires": {
"mongodb-core": "3.2.7",
"safe-buffer": "^5.1.2"
}
},
"mongodb-core": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz",
"integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==",
"requires": { "requires": {
"bson": "^1.1.1", "bson": "^1.1.1",
"require_optional": "^1.0.1", "require_optional": "^1.0.1",
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2"
"saslprep": "^1.0.0"
} }
}, },
"mongodb-dbpath": { "mongodb-dbpath": {
@@ -9810,15 +9794,6 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"saslprep": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
"optional": true,
"requires": {
"sparse-bitfield": "^3.0.3"
}
},
"sax": { "sax": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
@@ -10220,15 +10195,6 @@
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
"dev": true "dev": true
}, },
"sparse-bitfield": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
"optional": true,
"requires": {
"memory-pager": "^1.0.2"
}
},
"spawn-wrap": { "spawn-wrap": {
"version": "1.4.2", "version": "1.4.2",
"resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz",

View File

@@ -41,7 +41,7 @@
"lodash": "4.17.15", "lodash": "4.17.15",
"lru-cache": "5.1.1", "lru-cache": "5.1.1",
"mime": "2.4.4", "mime": "2.4.4",
"mongodb": "3.2.7", "mongodb": "3.3.0",
"node-rsa": "1.0.5", "node-rsa": "1.0.5",
"parse": "2.6.0", "parse": "2.6.0",
"pg-promise": "9.0.0", "pg-promise": "9.0.0",

View File

@@ -280,10 +280,17 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
}; };
adapter.createObject('MyClass', schema, {}).then(() => { adapter.createObject('MyClass', schema, {}).then(() => {
expect(adapter.database.serverConfig.isConnected()).toEqual(true); expect(adapter.database.serverConfig.connections().length > 0).toEqual(
adapter.handleShutdown(); true
expect(adapter.database.serverConfig.isConnected()).toEqual(false); );
done(); expect(adapter.database.serverConfig.s.connected).toEqual(true);
adapter.handleShutdown().then(() => {
expect(adapter.database.serverConfig.connections().length > 0).toEqual(
false
);
expect(adapter.database.serverConfig.s.connected).toEqual(false);
done();
});
}); });
}); });

View File

@@ -1999,12 +1999,16 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference).toBe(null); expect(call.args[0].options.readPreference.mode).toBe(
} else if (call.args[0].indexOf('_User') >= 0) { ReadPreference.PRIMARY
);
} else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference).toBe(null); expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.PRIMARY
);
} }
}); });
@@ -2050,14 +2054,14 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} else if (call.args[0].indexOf('_User') >= 0) { } else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} }
@@ -2106,14 +2110,14 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} else if (call.args[0].indexOf('_User') >= 0) { } else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.NEAREST ReadPreference.NEAREST
); );
} }
@@ -2937,12 +2941,16 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference).toBe(null); expect(call.args[0].options.readPreference.mode).toBe(
} else if (call.args[0].indexOf('_User') >= 0) { ReadPreference.PRIMARY
);
} else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference).toBe(null); expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.PRIMARY
);
} }
}); });
@@ -2986,14 +2994,14 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} else if (call.args[0].indexOf('_User') >= 0) { } else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} }
@@ -3040,14 +3048,14 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} else if (call.args[0].indexOf('_User') >= 0) { } else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.NEAREST ReadPreference.NEAREST
); );
} }
@@ -3077,7 +3085,7 @@ describe('ParseGraphQLServer', () => {
readPreference: SECONDARY readPreference: SECONDARY
subqueryReadPreference: NEAREST subqueryReadPreference: NEAREST
) { ) {
count results
} }
} }
} }
@@ -3101,14 +3109,14 @@ describe('ParseGraphQLServer', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('GraphQLClass') >= 0) { if (call.args[0].ns.collection.indexOf('GraphQLClass') >= 0) {
foundGraphQLClassReadPreference = true; foundGraphQLClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.SECONDARY ReadPreference.SECONDARY
); );
} else if (call.args[0].indexOf('_User') >= 0) { } else if (call.args[0].ns.collection.indexOf('_User') >= 0) {
foundUserClassReadPreference = true; foundUserClassReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.NEAREST ReadPreference.NEAREST
); );
} }

View File

@@ -27,14 +27,15 @@ describe_only_db('mongo')('Read preference option', () => {
return query.find().then(results => { return query.find().then(results => {
expect(results.length).toBe(1); expect(results.length).toBe(1);
expect(results[0].get('boolKey')).toBe(false); expect(results[0].get('boolKey')).toBe(false);
let myObjectReadPreference = null; let myObjectReadPreference = null;
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = true; myObjectReadPreference = true;
expect(call.args[2].readPreference).toBe(null); expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.PRIMARY
);
} }
}); });
@@ -79,9 +80,9 @@ describe_only_db('mongo')('Read preference option', () => {
let myObjectReadPreference = null; let myObjectReadPreference = null;
databaseAdapter.database.serverConfig.cursor.calls.all().forEach(call => { databaseAdapter.database.serverConfig.cursor.calls.all().forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = true; myObjectReadPreference = true;
expect(call.args[2].readPreference.preference).toBe( expect(call.args[0].options.readPreference.mode).toBe(
ReadPreference.NEAREST ReadPreference.NEAREST
); );
} }
@@ -118,8 +119,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -159,8 +161,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -201,8 +204,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -246,8 +250,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -291,8 +296,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -332,8 +338,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -375,8 +382,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -418,8 +426,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -457,8 +466,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -502,8 +512,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -545,8 +556,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -592,8 +604,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -638,8 +651,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -679,8 +693,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -724,8 +739,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -739,7 +755,7 @@ describe_only_db('mongo')('Read preference option', () => {
}); });
}); });
it('should change read preference for count', done => { xit('should change read preference for count', done => {
const databaseAdapter = Config.get(Parse.applicationId).database.adapter; const databaseAdapter = Config.get(Parse.applicationId).database.adapter;
const obj0 = new Parse.Object('MyObject'); const obj0 = new Parse.Object('MyObject');
@@ -766,8 +782,9 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject') >= 0) {
myObjectReadPreference = call.args[2].readPreference.preference; myObjectReadPreference =
call.args[0].options.readPreference.mode;
} }
}); });
@@ -823,17 +840,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -892,17 +909,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -959,17 +976,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -1027,17 +1044,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -1093,17 +1110,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -1158,17 +1175,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -1225,17 +1242,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -1293,17 +1310,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });
@@ -1375,17 +1392,17 @@ describe_only_db('mongo')('Read preference option', () => {
databaseAdapter.database.serverConfig.cursor.calls databaseAdapter.database.serverConfig.cursor.calls
.all() .all()
.forEach(call => { .forEach(call => {
if (call.args[0].indexOf('MyObject0') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject0') >= 0) {
myObjectReadPreference0 = myObjectReadPreference0 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject1') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject1') >= 0) {
myObjectReadPreference1 = myObjectReadPreference1 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
if (call.args[0].indexOf('MyObject2') >= 0) { if (call.args[0].ns.collection.indexOf('MyObject2') >= 0) {
myObjectReadPreference2 = myObjectReadPreference2 =
call.args[2].readPreference.preference; call.args[0].options.readPreference.mode;
} }
}); });

View File

@@ -146,6 +146,7 @@ export class MongoStorageAdapter implements StorageAdapter {
this._collectionPrefix = collectionPrefix; this._collectionPrefix = collectionPrefix;
this._mongoOptions = mongoOptions; this._mongoOptions = mongoOptions;
this._mongoOptions.useNewUrlParser = true; this._mongoOptions.useNewUrlParser = true;
this._mongoOptions.useUnifiedTopology = true;
// MaxTimeMS is not a global MongoDB client option, it is applied per operation. // MaxTimeMS is not a global MongoDB client option, it is applied per operation.
this._maxTimeMS = mongoOptions.maxTimeMS; this._maxTimeMS = mongoOptions.maxTimeMS;
@@ -203,9 +204,9 @@ export class MongoStorageAdapter implements StorageAdapter {
handleShutdown() { handleShutdown() {
if (!this.client) { if (!this.client) {
return; return Promise.resolve();
} }
this.client.close(false); return this.client.close(false);
} }
_adaptiveCollection(name: string) { _adaptiveCollection(name: string) {

View File

@@ -117,8 +117,12 @@ class ParseServer {
handleShutdown() { handleShutdown() {
const { adapter } = this.config.databaseController; const { adapter } = this.config.databaseController;
if (adapter && typeof adapter.handleShutdown === 'function') { if (adapter && typeof adapter.handleShutdown === 'function') {
adapter.handleShutdown(); const promise = adapter.handleShutdown();
if (promise instanceof Promise) {
return promise;
}
} }
return Promise.resolve();
} }
/** /**