diff --git a/src/keri/db/basing.py b/src/keri/db/basing.py index 8294cf551..7426ae733 100644 --- a/src/keri/db/basing.py +++ b/src/keri/db/basing.py @@ -939,7 +939,11 @@ 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.error("KERI_BASER_MAP_SIZE must be an integer value >1!") + raise 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..89044c7d9 100644 --- a/tests/db/test_basing.py +++ b/tests/db/test_basing.py @@ -2338,6 +2338,22 @@ def test_group_members(): """End Test""" +def test_KERI_BASER_MAP_SIZE_handles_bad_values(caplog): + # 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.environ["KERI_BASER_MAP_SIZE"] = "foo" # Not an int + err_msg = "KERI_BASER_MAP_SIZE must be an integer value > 1!" + with pytest.raises(ValueError): + Baser(reopen=False, temp=True) + assert err_msg in caplog.messages + os.environ["KERI_BASER_MAP_SIZE"] = "1.0" # Not an int + with pytest.raises(ValueError): + Baser(reopen=False, temp=True) + assert err_msg in caplog.messages + os.environ.pop("KERI_BASER_MAP_SIZE") + if __name__ == "__main__": test_baser()