remove redundant query from sync_missing_blobs
This commit is contained in:
parent
1aa2983216
commit
e6c549c457
1 changed files with 10 additions and 14 deletions
|
@ -370,22 +370,18 @@ class SQLiteStorage(SQLiteMixin):
|
||||||
|
|
||||||
def sync_missing_blobs(self, blob_files: typing.Set[str]) -> typing.Awaitable[typing.Set[str]]:
|
def sync_missing_blobs(self, blob_files: typing.Set[str]) -> typing.Awaitable[typing.Set[str]]:
|
||||||
def _sync_blobs(transaction: sqlite3.Connection) -> typing.Set[str]:
|
def _sync_blobs(transaction: sqlite3.Connection) -> typing.Set[str]:
|
||||||
to_update = [
|
finished_blob_hashes = tuple(
|
||||||
(blob_hash, )
|
blob_hash for (blob_hash, ) in transaction.execute(
|
||||||
for (blob_hash, ) in transaction.execute("select blob_hash from blob where status='finished'")
|
"select blob_hash from blob where status='finished'"
|
||||||
if blob_hash not in blob_files
|
).fetchall()
|
||||||
]
|
)
|
||||||
|
finished_blobs_set = set(finished_blob_hashes)
|
||||||
|
to_update_set = finished_blobs_set.difference(blob_files)
|
||||||
transaction.executemany(
|
transaction.executemany(
|
||||||
"update blob set status='pending' where blob_hash=?",
|
"update blob set status='pending' where blob_hash=?",
|
||||||
to_update
|
((blob_hash, ) for blob_hash in to_update_set)
|
||||||
)
|
).fetchall()
|
||||||
return {
|
return blob_files.intersection(finished_blobs_set)
|
||||||
blob_hash
|
|
||||||
for blob_hash, in _batched_select(
|
|
||||||
transaction, "select blob_hash from blob where status='finished' and blob_hash in {}",
|
|
||||||
list(blob_files)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return self.db.run(_sync_blobs)
|
return self.db.run(_sync_blobs)
|
||||||
|
|
||||||
# # # # # # # # # stream functions # # # # # # # # #
|
# # # # # # # # # stream functions # # # # # # # # #
|
||||||
|
|
Loading…
Reference in a new issue