Skip to content

Commit 16e14e5

Browse files
committed
Add optional bulk_remote_exists
1 parent d086bbb commit 16e14e5

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

dvc/repo/data.py

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -456,15 +456,41 @@ def _onerror(entry, exc):
456456
n += 1
457457
cb.set_size(n)
458458

459-
for key, entry in entries.items():
460-
k = (*key, "") if entry.meta and entry.meta.isdir else key
459+
entries_list = list(entries.values())
460+
if hasattr(storage_map, "bulk_remote_exists"):
461461
try:
462-
if not storage_map.remote_exists(entry, refresh=remote_refresh):
463-
missing_entries.append(os.path.sep.join(k))
464-
except StorageKeyError:
465-
pass
466-
finally:
467-
cb.relative_update()
462+
results = storage_map.bulk_remote_exists(
463+
entries_list, refresh=remote_refresh
464+
)
465+
for key, entry in entries.items():
466+
k = (*key, "") if entry.meta and entry.meta.isdir else key
467+
try:
468+
if not results.get(entry, True):
469+
missing_entries.append(os.path.sep.join(k))
470+
except StorageKeyError:
471+
pass
472+
finally:
473+
cb.relative_update()
474+
except Exception:
475+
for key, entry in entries.items():
476+
k = (*key, "") if entry.meta and entry.meta.isdir else key
477+
try:
478+
if not storage_map.remote_exists(entry, refresh=remote_refresh):
479+
missing_entries.append(os.path.sep.join(k))
480+
except StorageKeyError:
481+
pass
482+
finally:
483+
cb.relative_update()
484+
else:
485+
for key, entry in entries.items():
486+
k = (*key, "") if entry.meta and entry.meta.isdir else key
487+
try:
488+
if not storage_map.remote_exists(entry, refresh=remote_refresh):
489+
missing_entries.append(os.path.sep.join(k))
490+
except StorageKeyError:
491+
pass
492+
finally:
493+
cb.relative_update()
468494
data_index.onerror = orig_data_index_onerror
469495
return missing_entries
470496

0 commit comments

Comments
 (0)