aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2025-08-22 20:56:47 +0300
committerMohamedBassem <me@mbassem.com>2025-08-22 21:20:37 +0300
commit940550b9d391b02d520ade74d717fda188b25009 (patch)
treef46083a2bef2a07dc1c01e1d1c2f0834db7d76d6
parent3ab31c291f77e88a19b03c1dcd8f202b92cc7dc7 (diff)
downloadkarakeep-940550b9d391b02d520ade74d717fda188b25009.tar.zst
fix: dangling assets created by changing crawling config
-rw-r--r--apps/workers/workers/crawlerWorker.ts11
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 (