mirror of https://github.com/borgbackup/borg.git
Merge pull request #1519 from enkore/issue/1115
Repository: add compact_segments progress
This commit is contained in:
commit
5859badc29
|
@ -442,14 +442,17 @@ class Repository:
|
||||||
unused = []
|
unused = []
|
||||||
|
|
||||||
logger.debug('compaction started.')
|
logger.debug('compaction started.')
|
||||||
|
pi = ProgressIndicatorPercent(total=len(self.compact), msg='Compacting segments %3.0f%%', step=1)
|
||||||
for segment, freeable_space in sorted(self.compact.items()):
|
for segment, freeable_space in sorted(self.compact.items()):
|
||||||
if not self.io.segment_exists(segment):
|
if not self.io.segment_exists(segment):
|
||||||
logger.warning('segment %d not found, but listed in compaction data', segment)
|
logger.warning('segment %d not found, but listed in compaction data', segment)
|
||||||
del self.compact[segment]
|
del self.compact[segment]
|
||||||
|
pi.show()
|
||||||
continue
|
continue
|
||||||
segment_size = self.io.segment_size(segment)
|
segment_size = self.io.segment_size(segment)
|
||||||
if segment_size > 0.2 * self.max_segment_size and freeable_space < 0.15 * segment_size:
|
if segment_size > 0.2 * self.max_segment_size and freeable_space < 0.15 * segment_size:
|
||||||
logger.debug('not compacting segment %d (only %d bytes are sparse)', segment, freeable_space)
|
logger.debug('not compacting segment %d (only %d bytes are sparse)', segment, freeable_space)
|
||||||
|
pi.show()
|
||||||
continue
|
continue
|
||||||
segments.setdefault(segment, 0)
|
segments.setdefault(segment, 0)
|
||||||
logger.debug('compacting segment %d with usage count %d and %d freeable bytes',
|
logger.debug('compacting segment %d with usage count %d and %d freeable bytes',
|
||||||
|
@ -526,6 +529,8 @@ class Repository:
|
||||||
segments.setdefault(new_segment, 0)
|
segments.setdefault(new_segment, 0)
|
||||||
assert segments[segment] == 0
|
assert segments[segment] == 0
|
||||||
unused.append(segment)
|
unused.append(segment)
|
||||||
|
pi.show()
|
||||||
|
pi.finish()
|
||||||
complete_xfer(intermediate=False)
|
complete_xfer(intermediate=False)
|
||||||
logger.debug('compaction completed.')
|
logger.debug('compaction completed.')
|
||||||
|
|
||||||
|
|
|
@ -228,6 +228,8 @@ class ArchiverTestCaseBase(BaseTestCase):
|
||||||
os.chdir(self._old_wd)
|
os.chdir(self._old_wd)
|
||||||
# note: ignore_errors=True as workaround for issue #862
|
# note: ignore_errors=True as workaround for issue #862
|
||||||
shutil.rmtree(self.tmpdir, ignore_errors=True)
|
shutil.rmtree(self.tmpdir, ignore_errors=True)
|
||||||
|
# destroy logging configuration
|
||||||
|
logging.Logger.manager.loggerDict.clear()
|
||||||
|
|
||||||
def cmd(self, *args, **kw):
|
def cmd(self, *args, **kw):
|
||||||
exit_code = kw.pop('exit_code', 0)
|
exit_code = kw.pop('exit_code', 0)
|
||||||
|
@ -1044,13 +1046,15 @@ class ArchiverTestCase(ArchiverTestCaseBase):
|
||||||
manifest, key = Manifest.load(repository)
|
manifest, key = Manifest.load(repository)
|
||||||
self.assert_equal(len(manifest.archives), 0)
|
self.assert_equal(len(manifest.archives), 0)
|
||||||
|
|
||||||
def test_progress(self):
|
def test_progress_on(self):
|
||||||
self.create_regular_file('file1', size=1024 * 80)
|
self.create_regular_file('file1', size=1024 * 80)
|
||||||
self.cmd('init', self.repository_location)
|
self.cmd('init', self.repository_location)
|
||||||
# progress forced on
|
|
||||||
output = self.cmd('create', '--progress', self.repository_location + '::test4', 'input')
|
output = self.cmd('create', '--progress', self.repository_location + '::test4', 'input')
|
||||||
self.assert_in("\r", output)
|
self.assert_in("\r", output)
|
||||||
# progress forced off
|
|
||||||
|
def test_progress_off(self):
|
||||||
|
self.create_regular_file('file1', size=1024 * 80)
|
||||||
|
self.cmd('init', self.repository_location)
|
||||||
output = self.cmd('create', self.repository_location + '::test5', 'input')
|
output = self.cmd('create', self.repository_location + '::test5', 'input')
|
||||||
self.assert_not_in("\r", output)
|
self.assert_not_in("\r", output)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue