Skip to content

Commit cd52b8e

Browse files
committed
fix(knowledge): skip sync and document processing when KB is deleted
1 parent 18a559b commit cd52b8e

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

apps/sim/lib/knowledge/connectors/sync-engine.ts

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,19 +156,42 @@ export async function dispatchSync(
156156
const connectorRows = await db
157157
.select({
158158
knowledgeBaseId: knowledgeConnector.knowledgeBaseId,
159+
connectorArchivedAt: knowledgeConnector.archivedAt,
160+
connectorDeletedAt: knowledgeConnector.deletedAt,
159161
workspaceId: knowledgeBase.workspaceId,
160162
userId: knowledgeBase.userId,
163+
kbDeletedAt: knowledgeBase.deletedAt,
161164
})
162165
.from(knowledgeConnector)
163166
.innerJoin(knowledgeBase, eq(knowledgeBase.id, knowledgeConnector.knowledgeBaseId))
164167
.where(eq(knowledgeConnector.id, connectorId))
165168
.limit(1)
166169

167170
const row = connectorRows[0]
171+
if (!row) {
172+
logger.warn(`Skipping sync dispatch: connector not found`, { connectorId, requestId })
173+
return
174+
}
175+
if (row.kbDeletedAt) {
176+
logger.warn(`Skipping sync dispatch: knowledge base is deleted`, {
177+
connectorId,
178+
knowledgeBaseId: row.knowledgeBaseId,
179+
requestId,
180+
})
181+
return
182+
}
183+
if (row.connectorArchivedAt || row.connectorDeletedAt) {
184+
logger.warn(`Skipping sync dispatch: connector is archived or deleted`, {
185+
connectorId,
186+
requestId,
187+
})
188+
return
189+
}
190+
168191
const tags = [`connectorId:${connectorId}`]
169-
if (row?.knowledgeBaseId) tags.push(`knowledgeBaseId:${row.knowledgeBaseId}`)
170-
if (row?.workspaceId) tags.push(`workspaceId:${row.workspaceId}`)
171-
if (row?.userId) tags.push(`userId:${row.userId}`)
192+
if (row.knowledgeBaseId) tags.push(`knowledgeBaseId:${row.knowledgeBaseId}`)
193+
if (row.workspaceId) tags.push(`workspaceId:${row.workspaceId}`)
194+
if (row.userId) tags.push(`userId:${row.userId}`)
172195

173196
await knowledgeConnectorSync.trigger(
174197
{
@@ -261,7 +284,8 @@ export async function executeSync(
261284
.limit(1)
262285

263286
if (connectorRows.length === 0) {
264-
throw new Error(`Connector not found: ${connectorId}`)
287+
logger.warn(`Skipping sync: connector ${connectorId} not found, archived, or deleted`)
288+
return { ...result, error: 'connector_unavailable' }
265289
}
266290

267291
const connector = connectorRows[0]
@@ -278,7 +302,10 @@ export async function executeSync(
278302
.limit(1)
279303

280304
if (kbRows.length === 0) {
281-
throw new Error(`Knowledge base not found: ${connector.knowledgeBaseId}`)
305+
logger.warn(
306+
`Skipping sync: knowledge base ${connector.knowledgeBaseId} is deleted (connector ${connectorId})`
307+
)
308+
return { ...result, error: 'knowledge_base_deleted' }
282309
}
283310

284311
const userId = kbRows[0].userId

apps/sim/lib/knowledge/documents/service.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,10 @@ export async function processDocumentAsync(
386386
.limit(1)
387387

388388
if (kb.length === 0) {
389-
throw new Error(`Knowledge base not found: ${knowledgeBaseId}`)
389+
logger.warn(
390+
`[${documentId}] Skipping document processing: knowledge base ${knowledgeBaseId} is deleted`
391+
)
392+
return
390393
}
391394

392395
await db

0 commit comments

Comments
 (0)