只有makeSure的volatile trigger写入跨事务属性
This commit is contained in:
parent
b454040e2e
commit
528165a713
|
|
@ -429,6 +429,7 @@ class TriggerExecutor {
|
|||
}
|
||||
async checkpoint(timestamp) {
|
||||
let result = 0;
|
||||
console.log('checkpoint start', this.volatileEntities.join(','));
|
||||
for (const entity of this.volatileEntities) {
|
||||
const filter = {
|
||||
[Entity_1.TriggerUuidAttribute]: {
|
||||
|
|
@ -474,6 +475,7 @@ class TriggerExecutor {
|
|||
this.logger.error(`执行checkpoint时出错,对象是「${entity}」,异常是`, err);
|
||||
}
|
||||
}
|
||||
console.log('checkpoint end');
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -204,6 +204,7 @@ export class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends
|
|||
) {
|
||||
assert(trigger.action !== 'select');
|
||||
assert(trigger.when === 'commit');
|
||||
if (trigger.strict === 'makeSure') {
|
||||
const uuid = await generateNewIdAsync();
|
||||
const cxtStr = context.toString();
|
||||
const { data } = operation;
|
||||
|
|
@ -269,6 +270,7 @@ export class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends
|
|||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private postCommitTrigger<T extends keyof ED>(
|
||||
entity: T,
|
||||
|
|
@ -405,6 +407,7 @@ export class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends
|
|||
assert(ids.length > 0);
|
||||
const { fn } = trigger as VolatileTrigger<ED, T, Cxt>;
|
||||
await fn({ ids }, context, option);
|
||||
if (trigger.strict === 'makeSure') {
|
||||
try {
|
||||
await context.operate(entity, {
|
||||
id: await generateNewIdAsync(),
|
||||
|
|
@ -421,25 +424,10 @@ export class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends
|
|||
}, { includedDeleted: true, blockTrigger: true });
|
||||
}
|
||||
catch (err) {
|
||||
if (trigger.strict === 'takeEasy') {
|
||||
// 如果不是makeSure的就直接清空
|
||||
await context.operate(entity, {
|
||||
id: await generateNewIdAsync(),
|
||||
action: 'update',
|
||||
data: {
|
||||
[TriggerDataAttribute]: null,
|
||||
[TriggerUuidAttribute]: null,
|
||||
},
|
||||
filter: {
|
||||
id: {
|
||||
$in: ids,
|
||||
}
|
||||
}
|
||||
}, { includedDeleted: true });
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断一个trigger和当前modi上下文是否符合
|
||||
|
|
|
|||
Loading…
Reference in New Issue