fix(server): avoid updates persist forever (#5258)

This commit is contained in:
liuyi
2023-12-11 09:17:49 +00:00
parent feb7bd9fef
commit 30ecee483d

View File

@@ -565,7 +565,9 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
...updates.map(u => u.blob)
);
await this.upsert(workspaceId, id, doc, last.seq);
const done = await this.upsert(workspaceId, id, doc, last.seq);
if (done) {
if (snapshot) {
this.event.emit('snapshot.updated', {
id,
@@ -578,14 +580,14 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
});
}
const done = await this.upsert(workspaceId, id, doc, last.seq);
if (done) {
this.logger.debug(
`Squashed ${updates.length} updates for ${id} in workspace ${workspaceId}`
);
}
await this.db.update.deleteMany({
// always delete updates
// the upsert will return false if the state is not newer, so we don't need to worry about it
const { count } = await this.db.update.deleteMany({
where: {
id,
workspaceId,
@@ -595,8 +597,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
},
});
await this.updateCachedUpdatesCount(workspaceId, id, -updates.length);
}
await this.updateCachedUpdatesCount(workspaceId, id, -count);
return doc;
}