@@ -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