소스 검색

Improve repo check output (1.1-maint) (#4831)

check: improve error output for matching index size, see #4829

if the rebuilt index size matched the on-disk index size AND there
was a difference in e.g. 1 key, the old code only output the key/value
for one index, but not what is present in the other index.

we already had better code in the branch for different index sizes,
so just use that for both cases.

additionally we tell when the index size matches (new) because we
also tell if there is a mismatch.
TW 5 년 전
부모
커밋
4c817d89c4
1개의 변경된 파일14개의 추가작업 그리고 18개의 파일을 삭제
  1. 14 18
      src/borg/repository.py

+ 14 - 18
src/borg/repository.py

@@ -958,24 +958,20 @@ class Repository:
                 report_error('Index object count mismatch.')
                 logger.error('committed index: %d objects', len(current_index))
                 logger.error('rebuilt index:   %d objects', len(self.index))
-
-                line_format = '%-64s %-16s %-16s'
-                not_found = '<not found>'
-                logger.warning(line_format, 'ID', 'rebuilt index', 'committed index')
-                for key, value in self.index.iteritems():
-                    current_value = current_index.get(key, not_found)
-                    if current_value != value:
-                        logger.warning(line_format, bin_to_hex(key), value, current_value)
-                for key, current_value in current_index.iteritems():
-                    if key in self.index:
-                        continue
-                    value = self.index.get(key, not_found)
-                    if current_value != value:
-                        logger.warning(line_format, bin_to_hex(key), value, current_value)
-            elif current_index:
-                for key, value in self.index.iteritems():
-                    if current_index.get(key, (-1, -1)) != value:
-                        report_error('Index mismatch for key {}. {} != {}'.format(key, value, current_index.get(key, (-1, -1))))
+            else:
+                logger.info('Index object count match.')
+            line_format = 'ID: %-64s rebuilt index: %-16s committed index: %-16s'
+            not_found = '<not found>'
+            for key, value in self.index.iteritems():
+                current_value = current_index.get(key, not_found)
+                if current_value != value:
+                    logger.warning(line_format, bin_to_hex(key), value, current_value)
+            for key, current_value in current_index.iteritems():
+                if key in self.index:
+                    continue
+                value = self.index.get(key, not_found)
+                if current_value != value:
+                    logger.warning(line_format, bin_to_hex(key), value, current_value)
         if repair:
             self.compact_segments()
             self.write_index()