From c9c2495611ff05bc2d585de82c7a53c63588d188 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 21 Mar 2022 21:58:36 -0300 Subject: [PATCH] if a blob file exists but is pending on db, fix on startup --- lbry/blob/blob_manager.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lbry/blob/blob_manager.py b/lbry/blob/blob_manager.py index 15709be08..566306945 100644 --- a/lbry/blob/blob_manager.py +++ b/lbry/blob/blob_manager.py @@ -83,6 +83,8 @@ class BlobManager: to_add = await self.storage.sync_missing_blobs(in_blobfiles_dir) if to_add: self.completed_blob_hashes.update(to_add) + # check blobs that aren't set as finished but were seen on disk + await self.ensure_completed_blobs_status(in_blobfiles_dir - to_add) if self.config.track_bandwidth: self.connection_manager.start() return True @@ -113,7 +115,7 @@ class BlobManager: (blob.blob_hash, blob.length, blob.added_on, blob.is_mine), finished=False) ) - def ensure_completed_blobs_status(self, blob_hashes: typing.List[str]) -> asyncio.Task: + async def ensure_completed_blobs_status(self, blob_hashes: typing.Iterable[str]): """Ensures that completed blobs from a given list of blob hashes are set as 'finished' in the database.""" to_add = [] for blob_hash in blob_hashes: @@ -121,7 +123,10 @@ class BlobManager: continue blob = self.get_blob(blob_hash) to_add.append((blob.blob_hash, blob.length, blob.added_on, blob.is_mine)) - return self.loop.create_task(self.storage.add_blobs(*to_add, finished=True)) + if len(to_add) > 500: + await self.storage.add_blobs(*to_add, finished=True) + to_add.clear() + return await self.storage.add_blobs(*to_add, finished=True) def delete_blob(self, blob_hash: str): if not is_valid_blobhash(blob_hash):