@@ -156,19 +156,51 @@ 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+ await db
182+ . update ( knowledgeConnector )
183+ . set ( {
184+ status : 'error' ,
185+ nextSyncAt : null ,
186+ lastSyncError : 'Knowledge base deleted' ,
187+ updatedAt : new Date ( ) ,
188+ } )
189+ . where ( eq ( knowledgeConnector . id , connectorId ) )
190+ return
191+ }
192+ if ( row . connectorArchivedAt || row . connectorDeletedAt ) {
193+ logger . warn ( `Skipping sync dispatch: connector is archived or deleted` , {
194+ connectorId,
195+ requestId,
196+ } )
197+ return
198+ }
199+
168200 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 } ` )
201+ if ( row . knowledgeBaseId ) tags . push ( `knowledgeBaseId:${ row . knowledgeBaseId } ` )
202+ if ( row . workspaceId ) tags . push ( `workspaceId:${ row . workspaceId } ` )
203+ if ( row . userId ) tags . push ( `userId:${ row . userId } ` )
172204
173205 await knowledgeConnectorSync . trigger (
174206 {
@@ -261,7 +293,8 @@ export async function executeSync(
261293 . limit ( 1 )
262294
263295 if ( connectorRows . length === 0 ) {
264- throw new Error ( `Connector not found: ${ connectorId } ` )
296+ logger . warn ( `Skipping sync: connector ${ connectorId } not found, archived, or deleted` )
297+ return { ...result , error : 'connector_unavailable' }
265298 }
266299
267300 const connector = connectorRows [ 0 ]
@@ -278,7 +311,19 @@ export async function executeSync(
278311 . limit ( 1 )
279312
280313 if ( kbRows . length === 0 ) {
281- throw new Error ( `Knowledge base not found: ${ connector . knowledgeBaseId } ` )
314+ logger . warn (
315+ `Skipping sync: knowledge base ${ connector . knowledgeBaseId } is deleted (connector ${ connectorId } )`
316+ )
317+ await db
318+ . update ( knowledgeConnector )
319+ . set ( {
320+ status : 'error' ,
321+ nextSyncAt : null ,
322+ lastSyncError : 'Knowledge base deleted' ,
323+ updatedAt : new Date ( ) ,
324+ } )
325+ . where ( eq ( knowledgeConnector . id , connectorId ) )
326+ return { ...result , error : 'knowledge_base_deleted' }
282327 }
283328
284329 const userId = kbRows [ 0 ] . userId
0 commit comments