From 750a46202a63e3f6565282f62f469c3bbc81528a Mon Sep 17 00:00:00 2001 From: Charles Lanahan Date: Mon, 8 Jul 2024 18:04:54 -0400 Subject: [PATCH] Fixed KERI_BASER_MAP_SIZE not integer bug. (#812) * Fixed KERI_BASER_MAP_SIZE not integer bug. Added log message and exception check for when KERI_BASER_MAP_SIZE not an integer. Signed-off-by: Charles Lanahan * Rethrow exception per PR request to fail fast. Updated log message to reflect the issue --------- Signed-off-by: Charles Lanahan --- src/keri/db/basing.py | 6 +++++- tests/db/test_basing.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/keri/db/basing.py b/src/keri/db/basing.py index 090b357d4..d1c83563f 100644 --- a/src/keri/db/basing.py +++ b/src/keri/db/basing.py @@ -777,7 +777,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 b067985dc..87428731e 100644 --- a/tests/db/test_basing.py +++ b/tests/db/test_basing.py @@ -2273,6 +2273,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()