Skip to content

Commit c23c364

Browse files
committed
apply review changes for feat: cross-trigger transaction context
1 parent 83ab9f7 commit c23c364

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/RestWrite.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,12 @@ RestWrite.prototype.execute = function () {
169169
throw new Parse.Error(Parse.Error.EMAIL_NOT_FOUND, 'User email is not verified.');
170170
}
171171
return this.response;
172-
});
172+
}).finally(() => {
173+
if (this.context.transaction) {
174+
// Ensure isolation even on uncaught errors
175+
this.config.database.setTransactionalSession(null);
176+
}
177+
});;
173178
};
174179

175180
// Uses the Auth object to get the list of roles, adds the user id

src/triggers.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,15 @@ export function getRequestObject(
281281
triggerType === Types.afterFind
282282
) {
283283
// Set a copy of the context on the request object.
284-
request.context = Object.assign({
285-
createTransactionalSession: config.database.createTransactionalSession.bind(config.database),
286-
commitTransactionalSession: config.database.commitTransactionalSession.bind(config.database),
287-
abortTransactionalSession: config.database.abortTransactionalSession.bind(config.database),
288-
}, context);
284+
request.context = Object.assign(
285+
{},
286+
context,
287+
{
288+
createTransactionalSession: config.database.createTransactionalSession.bind(config.database),
289+
commitTransactionalSession: config.database.commitTransactionalSession.bind(config.database),
290+
abortTransactionalSession: config.database.abortTransactionalSession.bind(config.database),
291+
}
292+
);
289293
}
290294

291295
if (!auth) {

0 commit comments

Comments
 (0)