From d70d14828fc52f7555f2ff544a48637cba10d15d Mon Sep 17 00:00:00 2001 From: Philip Feairheller Date: Fri, 28 Jun 2024 09:26:13 -0700 Subject: [PATCH] Externalize the size limit for LMDB map size for Baser to an environment variable. (#810) Signed-off-by: pfeairheller --- src/keri/db/basing.py | 6 ++++++ src/keri/db/dbing.py | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/keri/db/basing.py b/src/keri/db/basing.py index f403a136a..8294cf551 100644 --- a/src/keri/db/basing.py +++ b/src/keri/db/basing.py @@ -593,6 +593,9 @@ def reopenDB(db, clear=False, **kwa): db.close(clear=clear) +KERIBaserMapSizeKey = "KERI_BASER_MAP_SIZE" + + class Baser(dbing.LMDBer): """ Baser sets up named sub databases with Keri Event Logs within main database @@ -935,6 +938,9 @@ def __init__(self, headDirPath=None, reopen=False, **kwa): self._kevers = dbdict() self._kevers.db = self # assign db for read through cache of kevers + if (mapSize := os.getenv(KERIBaserMapSizeKey)) is not None: + self.MapSize = int(mapSize) + super(Baser, self).__init__(headDirPath=headDirPath, reopen=reopen, **kwa) @property diff --git a/src/keri/db/dbing.py b/src/keri/db/dbing.py index ddb0ce4e0..1dc1208bc 100644 --- a/src/keri/db/dbing.py +++ b/src/keri/db/dbing.py @@ -303,6 +303,7 @@ class LMDBer(filing.Filer): TempSuffix = "_test" Perm = stat.S_ISVTX | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR # 0o1700==960 MaxNamedDBs = 96 + MapSize = 104857600 def __init__(self, readonly=False, **kwa): """ @@ -378,7 +379,7 @@ def reopen(self, readonly=False, **kwa): # open lmdb major database instance # creates files data.mdb and lock.mdb in .dbDirPath - self.env = lmdb.open(self.path, max_dbs=self.MaxNamedDBs, map_size=104857600, + self.env = lmdb.open(self.path, max_dbs=self.MaxNamedDBs, map_size=self.MapSize, mode=self.perm, readonly=self.readonly) self.opened = True if opened and self.env else False