diff options
| author | MohamedBassem <me@mbassem.com> | 2025-08-22 20:56:47 +0300 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2025-08-22 21:20:37 +0300 |
| commit | 940550b9d391b02d520ade74d717fda188b25009 (patch) | |
| tree | f46083a2bef2a07dc1c01e1d1c2f0834db7d76d6 | |
| parent | 3ab31c291f77e88a19b03c1dcd8f202b92cc7dc7 (diff) | |
| download | karakeep-940550b9d391b02d520ade74d717fda188b25009.tar.zst | |
fix: dangling assets created by changing crawling config
| -rw-r--r-- | apps/workers/workers/crawlerWorker.ts | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/apps/workers/workers/crawlerWorker.ts b/apps/workers/workers/crawlerWorker.ts index 68db6e92..deced504 100644 --- a/apps/workers/workers/crawlerWorker.ts +++ b/apps/workers/workers/crawlerWorker.ts @@ -938,6 +938,7 @@ async function crawlAndParseUrl( }; // TODO(important): Restrict the size of content to store + const assetDeletionTasks: Promise<void>[] = []; await db.transaction(async (txn) => { await txn .update(bookmarkLinks) @@ -978,9 +979,11 @@ async function crawlAndParseUrl( }, txn, ); + assetDeletionTasks.push(silentDeleteAsset(userId, oldScreenshotAssetId)); } if (imageAssetInfo) { await updateAsset(oldImageAssetId, imageAssetInfo, txn); + assetDeletionTasks.push(silentDeleteAsset(userId, oldImageAssetId)); } if (htmlContentAssetInfo.result === "stored") { await updateAsset( @@ -996,18 +999,16 @@ async function crawlAndParseUrl( }, txn, ); + assetDeletionTasks.push(silentDeleteAsset(userId, oldContentAssetId)); } else if (oldContentAssetId) { // Unlink the old content asset await txn.delete(assets).where(eq(assets.id, oldContentAssetId)); + assetDeletionTasks.push(silentDeleteAsset(userId, oldContentAssetId)); } }); // Delete the old assets if any - await Promise.all([ - silentDeleteAsset(userId, oldScreenshotAssetId), - silentDeleteAsset(userId, oldImageAssetId), - silentDeleteAsset(userId, oldContentAssetId), - ]); + await Promise.all(assetDeletionTasks); return async () => { if ( |
