fix: Duplicate session destruction can cause unhandled promise rejection (#10319)

This commit is contained in:
Manuel
2026-03-26 01:41:45 +00:00
committed by GitHub
parent eea27af3b1
commit 92791c1d1d
2 changed files with 7 additions and 9 deletions
+1 -7
View File
@@ -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
View File
@@ -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