예제 #1
0
 def walk_datadir(datadir, context, part_filter):
     partitions = [
         pd for pd in os.listdir(datadir)
         if looks_like_partition(pd) and part_filter(pd)
     ]
     random.shuffle(partitions)
     for partition in partitions:
         part_dir = os.path.join(datadir, partition)
         if not os.path.isdir(part_dir):
             continue
         suffixes = os.listdir(part_dir)
         if not suffixes:
             os.rmdir(part_dir)
             continue
         for suffix in suffixes:
             suff_dir = os.path.join(part_dir, suffix)
             if not os.path.isdir(suff_dir):
                 continue
             hashes = os.listdir(suff_dir)
             if not hashes:
                 os.rmdir(suff_dir)
                 continue
             for hsh in hashes:
                 hash_dir = os.path.join(suff_dir, hsh)
                 if not os.path.isdir(hash_dir):
                     continue
                 object_file = os.path.join(hash_dir, hsh + '.db')
                 # common case
                 if os.path.exists(object_file):
                     yield (partition, object_file, context)
                     continue
                 # look for any alternate db filenames
                 db_files = get_db_files(object_file)
                 if db_files:
                     yield (partition, db_files[-1], context)
                     continue
                 try:
                     os.rmdir(hash_dir)
                 except OSError as e:
                     if e.errno != errno.ENOTEMPTY:
                         raise
예제 #2
0
 def walk_datadir(datadir, context, part_filter):
     partitions = [pd for pd in os.listdir(datadir)
                   if looks_like_partition(pd) and part_filter(pd)]
     random.shuffle(partitions)
     for partition in partitions:
         part_dir = os.path.join(datadir, partition)
         if not os.path.isdir(part_dir):
             continue
         suffixes = os.listdir(part_dir)
         if not suffixes:
             os.rmdir(part_dir)
             continue
         for suffix in suffixes:
             suff_dir = os.path.join(part_dir, suffix)
             if not os.path.isdir(suff_dir):
                 continue
             hashes = os.listdir(suff_dir)
             if not hashes:
                 os.rmdir(suff_dir)
                 continue
             for hsh in hashes:
                 hash_dir = os.path.join(suff_dir, hsh)
                 if not os.path.isdir(hash_dir):
                     continue
                 object_file = os.path.join(hash_dir, hsh + '.db')
                 # common case
                 if os.path.exists(object_file):
                     yield (partition, object_file, context)
                     continue
                 # look for any alternate db filenames
                 db_files = get_db_files(object_file)
                 if db_files:
                     yield (partition, db_files[-1], context)
                     continue
                 try:
                     os.rmdir(hash_dir)
                 except OSError as e:
                     if e.errno != errno.ENOTEMPTY:
                         raise
예제 #3
0
 def _db_file_exists(self, db_path):
     return bool(get_db_files(db_path))
예제 #4
0
 def _db_file_exists(self, db_path):
     return bool(get_db_files(db_path))