mirror of
https://github.com/parse-community/parse-server
synced 2026-08-09 13:03:18 +00:00
fix: Duplicate session destruction can cause unhandled promise rejection (#10319)
This commit is contained in:
@@ -1466,13 +1466,7 @@ describe('Parse.User testing', () => {
|
||||
const user = await Parse.User.logInWith('facebook');
|
||||
const sessionToken = user.getSessionToken();
|
||||
const query = new Parse.Query('_Session');
|
||||
// destroyDuplicatedSessions is fire-and-forget, poll until cleanup completes
|
||||
let results;
|
||||
for (let i = 0; i < 10; i++) {
|
||||
results = await query.find({ useMasterKey: true });
|
||||
if (results.length <= 1) { break; }
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
}
|
||||
const results = await query.find({ useMasterKey: true });
|
||||
expect(results.length).toBe(1);
|
||||
expect(results[0].get('sessionToken')).toBe(sessionToken);
|
||||
expect(results[0].get('createdWith')).toEqual({
|
||||
|
||||
+6
-2
@@ -1140,7 +1140,7 @@ RestWrite.prototype.destroyDuplicatedSessions = function () {
|
||||
if (!user.objectId) {
|
||||
return;
|
||||
}
|
||||
this.config.database.destroy(
|
||||
return this.config.database.destroy(
|
||||
'_Session',
|
||||
{
|
||||
user,
|
||||
@@ -1149,7 +1149,11 @@ RestWrite.prototype.destroyDuplicatedSessions = function () {
|
||||
},
|
||||
{},
|
||||
this.validSchemaController
|
||||
);
|
||||
).catch(e => {
|
||||
if (e.code !== Parse.Error.OBJECT_NOT_FOUND) {
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Handles any followup logic
|
||||
|
||||
Reference in New Issue
Block a user