Bladeren bron

use get_reset_ec to internally re-init ec/warnings

if we do multiple calls to Archiver.do_something(),
we need to reset the ec / warnings after each call,
otherwise they will keep growing (in severity, in length).
Thomas Waldmann 1 jaar geleden
bovenliggende
commit
a0a07ab464
2 gewijzigde bestanden met toevoegingen van 21 en 8 verwijderingen
  1. 14 8
      src/borg/archiver/benchmark_cmd.py
  2. 7 0
      src/borg/helpers/__init__.py

+ 14 - 8
src/borg/archiver/benchmark_cmd.py

@@ -9,7 +9,7 @@ from ..constants import *  # NOQA
 from ..crypto.key import FlexiKey
 from ..crypto.key import FlexiKey
 from ..helpers import format_file_size
 from ..helpers import format_file_size
 from ..helpers import msgpack
 from ..helpers import msgpack
-from ..helpers import get_ec
+from ..helpers import get_reset_ec
 from ..item import Item
 from ..item import Item
 from ..platform import SyncFile
 from ..platform import SyncFile
 
 
@@ -22,7 +22,7 @@ class BenchmarkMixIn:
             compression = "--compression=none"
             compression = "--compression=none"
             # measure create perf (without files cache to always have it chunking)
             # measure create perf (without files cache to always have it chunking)
             t_start = time.monotonic()
             t_start = time.monotonic()
-            rc = get_ec(
+            rc = get_reset_ec(
                 self.do_create(
                 self.do_create(
                     self.parse_args(
                     self.parse_args(
                         [
                         [
@@ -40,23 +40,27 @@ class BenchmarkMixIn:
             dt_create = t_end - t_start
             dt_create = t_end - t_start
             assert rc == 0
             assert rc == 0
             # now build files cache
             # now build files cache
-            rc1 = get_ec(
+            rc1 = get_reset_ec(
                 self.do_create(self.parse_args([f"--repo={repo}", "create", compression, "borg-benchmark-crud2", path]))
                 self.do_create(self.parse_args([f"--repo={repo}", "create", compression, "borg-benchmark-crud2", path]))
             )
             )
-            rc2 = get_ec(self.do_delete(self.parse_args([f"--repo={repo}", "delete", "-a", "borg-benchmark-crud2"])))
+            rc2 = get_reset_ec(
+                self.do_delete(self.parse_args([f"--repo={repo}", "delete", "-a", "borg-benchmark-crud2"]))
+            )
             assert rc1 == rc2 == 0
             assert rc1 == rc2 == 0
             # measure a no-change update (archive1 is still present)
             # measure a no-change update (archive1 is still present)
             t_start = time.monotonic()
             t_start = time.monotonic()
-            rc1 = get_ec(
+            rc1 = get_reset_ec(
                 self.do_create(self.parse_args([f"--repo={repo}", "create", compression, "borg-benchmark-crud3", path]))
                 self.do_create(self.parse_args([f"--repo={repo}", "create", compression, "borg-benchmark-crud3", path]))
             )
             )
             t_end = time.monotonic()
             t_end = time.monotonic()
             dt_update = t_end - t_start
             dt_update = t_end - t_start
-            rc2 = get_ec(self.do_delete(self.parse_args([f"--repo={repo}", "delete", "-a", "borg-benchmark-crud3"])))
+            rc2 = get_reset_ec(
+                self.do_delete(self.parse_args([f"--repo={repo}", "delete", "-a", "borg-benchmark-crud3"]))
+            )
             assert rc1 == rc2 == 0
             assert rc1 == rc2 == 0
             # measure extraction (dry-run: without writing result to disk)
             # measure extraction (dry-run: without writing result to disk)
             t_start = time.monotonic()
             t_start = time.monotonic()
-            rc = get_ec(
+            rc = get_reset_ec(
                 self.do_extract(self.parse_args([f"--repo={repo}", "extract", "borg-benchmark-crud1", "--dry-run"]))
                 self.do_extract(self.parse_args([f"--repo={repo}", "extract", "borg-benchmark-crud1", "--dry-run"]))
             )
             )
             t_end = time.monotonic()
             t_end = time.monotonic()
@@ -64,7 +68,9 @@ class BenchmarkMixIn:
             assert rc == 0
             assert rc == 0
             # measure archive deletion (of LAST present archive with the data)
             # measure archive deletion (of LAST present archive with the data)
             t_start = time.monotonic()
             t_start = time.monotonic()
-            rc = get_ec(self.do_delete(self.parse_args([f"--repo={repo}", "delete", "-a", "borg-benchmark-crud1"])))
+            rc = get_reset_ec(
+                self.do_delete(self.parse_args([f"--repo={repo}", "delete", "-a", "borg-benchmark-crud1"]))
+            )
             t_end = time.monotonic()
             t_end = time.monotonic()
             dt_delete = t_end - t_start
             dt_delete = t_end - t_start
             assert rc == 0
             assert rc == 0

+ 7 - 0
src/borg/helpers/__init__.py

@@ -164,3 +164,10 @@ def get_ec(ec=None):
         return rcs[0]
         return rcs[0]
     # there were different kinds of warnings
     # there were different kinds of warnings
     return EXIT_WARNING  # generic warning rc, user has to look into the logs
     return EXIT_WARNING  # generic warning rc, user has to look into the logs
+
+
+def get_reset_ec(ec=None):
+    """Like get_ec, but re-initialize ec/warnings afterwards."""
+    rc = get_ec(ec)
+    init_ec_warnings()
+    return rc