同步失败回调 开启新事务处理

This commit is contained in:
wkj 2024-09-29 14:41:46 +08:00
parent 1ef5b369ef
commit d0bff1f9b0
2 changed files with 44 additions and 24 deletions

View File

@ -50,17 +50,27 @@ class Synchronizer {
}
catch (err) {
if (onFailed) {
await onFailed({
remoteEntity: entity,
remoteEntityId: entityId,
data: queue.map((ele) => ({
entity: ele.oper.targetEntity,
rowIds: ele.oper.filter.id.$in,
action: ele.oper.action,
data: ele.oper.data,
})),
reason: err,
}, context);
context.on('rollback', async () => {
const context2 = this.contextBuilder();
context2.begin();
try {
await onFailed({
remoteEntity: entity,
remoteEntityId: entityId,
data: queue.map((ele) => ({
entity: ele.oper.targetEntity,
rowIds: ele.oper.filter.id.$in,
action: ele.oper.action,
data: ele.oper.data,
})),
reason: err,
}, context2);
context2.commit();
}
catch (err) {
context2.rollback();
}
});
}
throw err;
}

View File

@ -92,19 +92,29 @@ export default class Synchronizer<ED extends EntityDict & BaseEntityDict, Cxt ex
}
catch (err: any) {
if (onFailed) {
await onFailed({
remoteEntity: entity!,
remoteEntityId: entityId!,
data: queue.map(
(ele) => ({
entity: ele.oper.targetEntity!,
rowIds: (ele.oper.filter as any).id.$in, // 暂时应该没什么用
action: ele.oper.action!,
data: ele.oper.data!,
})
),
reason: err,
}, context);
context.on('rollback', async () => {
const context2 = this.contextBuilder();
context2.begin();
try {
await onFailed({
remoteEntity: entity!,
remoteEntityId: entityId!,
data: queue.map(
(ele) => ({
entity: ele.oper.targetEntity!,
rowIds: (ele.oper.filter as any).id.$in, // 暂时应该没什么用
action: ele.oper.action!,
data: ele.oper.data!,
})
),
reason: err,
}, context2);
context2.commit();
}
catch (err) {
context2.rollback();
}
});
}
throw err;
}