Skip to content

Commit a8be369

Browse files
committed
fix: sharedb presence handling
1 parent d85c92c commit a8be369

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

apps/nestjs-backend/src/features/base-node/base-node.service.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
getBaseNodeChannel,
88
HttpErrorCode,
99
} from '@teable/core';
10+
import type { Prisma } from '@teable/db-main-prisma';
1011
import { PrismaService } from '@teable/db-main-prisma';
1112
import type {
1213
IBaseNodePresenceCreatePayload,
@@ -174,6 +175,11 @@ export class BaseNodeService {
174175
| IBaseNodePresenceDeletePayload,
175176
>(baseId: string, handler: (presence: LocalPresence<T>) => void) {
176177
this.performanceCacheService.del(generateBaseNodeListCacheKey(baseId));
178+
// Skip if ShareDB connection is already closed (e.g., during shutdown)
179+
if (this.shareDbService.shareDbAdapter.closed) {
180+
this.logger.error('ShareDB connection is already closed, presence handler skipped');
181+
return;
182+
}
177183
const channel = getBaseNodeChannel(baseId);
178184
const presence = this.shareDbService.connect().getPresence(channel);
179185
const localPresence = presence.create(channel);
@@ -1151,17 +1157,17 @@ export class BaseNodeService {
11511157
return;
11521158
}
11531159

1154-
const deleteNode = async (prisma: PrismaService) => {
1160+
const deleteNode = async (prisma: Prisma.TransactionClient) => {
11551161
const toDeleteNode = await prisma.baseNode.findFirst({
11561162
where: { baseId, resourceType, resourceId },
11571163
});
11581164
if (!toDeleteNode) {
11591165
return;
11601166
}
1161-
const maxOrder = await this.getMaxOrder(baseId);
1162-
await prisma.baseNode.delete({
1167+
await prisma.baseNode.deleteMany({
11631168
where: { id: toDeleteNode.id },
11641169
});
1170+
const maxOrder = await this.getMaxOrder(baseId);
11651171
const orphans = await prisma.baseNode.findMany({
11661172
where: { baseId, parentId: toDeleteNode.parentId },
11671173
select: { id: true, order: true },

0 commit comments

Comments
 (0)