diff --git a/src/keri/db/basing.py b/src/keri/db/basing.py index 8294cf551..15473b12d 100644 --- a/src/keri/db/basing.py +++ b/src/keri/db/basing.py @@ -939,7 +939,10 @@ def __init__(self, headDirPath=None, reopen=False, **kwa): self._kevers.db = self # assign db for read through cache of kevers if (mapSize := os.getenv(KERIBaserMapSizeKey)) is not None: - self.MapSize = int(mapSize) + try: + self.MapSize = int(mapSize) + except ValueError: + logger.exception("KERI_BASER_MAP_SIZE must be an integer value! Will continue to use default keripy value of 104857600!") super(Baser, self).__init__(headDirPath=headDirPath, reopen=reopen, **kwa) diff --git a/tests/db/test_basing.py b/tests/db/test_basing.py index 43d575007..ca4a23dde 100644 --- a/tests/db/test_basing.py +++ b/tests/db/test_basing.py @@ -2338,6 +2338,16 @@ def test_group_members(): """End Test""" +def test_KERI_BASER_MAP_SIZE_handles_bad_values(): + # Base case works because of above tests, they will all break if happy path + # is broken. We'll just test some unhappy values. + + # Pytest will fail if any exceptions raised here. + os.putenv("KERI_BASER_MAP_SIZE", "foo") # Not an int + baser = Baser(reopen=False) + os.putenv("KERI_BASER_MAP_SIZE", "1.0") # Not an int + baser = Baser(reopen=False) + if __name__ == "__main__": test_baser()