Open oberstet opened 2 years ago
crossbar/network/_api.py
crossbar/network/_authenticator.py
crossbar/master/mrealm/controller.py
crossbar/master/node/controller.py
crossbar/master/node/authenticator.py
crossbar/master/node/node.py
crossbar/edge/worker/realmstore.py
crossbar/edge/worker/xbrmm.py
crossbar/edge/worker/xbr/_marketmaker.py
crossbar/router/cookiestore.py
(cpy39_1) (base) oberstet@intel-nuci7:~/scm/crossbario/crossbar$ find crossbar -name "*.py" -exec grep -Hi "= zlmdb.Database" {} \;
crossbar/network/_api.py: self._db = zlmdb.Database(dbpath=self._dbpath, maxsize=2**30, readonly=False, sync=True)
crossbar/network/_authenticator.py: self._db = zlmdb.Database(dbpath=self._dbpath, maxsize=2**30, readonly=False, sync=True)
crossbar/master/mrealm/controller.py: self.gdb = zlmdb.Database(dbpath=dbfile, maxsize=maxsize, readonly=False, sync=True)
crossbar/master/mrealm/controller.py: self.db = zlmdb.Database(dbpath=dbfile, maxsize=maxsize, readonly=False, sync=True)
crossbar/master/node/controller.py: self.db = zlmdb.Database(dbpath=dbpath, maxsize=maxsize, readonly=False, sync=True)
crossbar/master/node/controller.py: db = zlmdb.Database(dbpath=dbpath, readonly=False)
crossbar/master/node/controller.py: db = zlmdb.Database(dbpath=dbpath, readonly=False)
crossbar/master/node/controller.py: db = zlmdb.Database(dbpath=dbpath, readonly=False)
crossbar/master/node/authenticator.py: self._db = zlmdb.Database(dbpath=dbpath, maxsize=maxsize, readonly=False, sync=True)
crossbar/master/node/node.py: self._db = zlmdb.Database(dbpath=dbpath, maxsize=maxsize, readonly=False, sync=True)
crossbar/edge/worker/realmstore.py: self._db = zlmdb.Database(dbpath=dbpath, maxsize=maxsize, readonly=readonly, sync=sync)
crossbar/edge/worker/xbrmm.py: self._db = zlmdb.Database(dbpath=self._dbpath,
crossbar/edge/worker/xbr/_marketmaker.py: self._db = zlmdb.Database(dbpath=dbpath, maxsize=maxsize, readonly=readonly, sync=sync)
crossbar/router/cookiestore.py: self._db = zlmdb.Database(dbpath=dbpath, maxsize=maxsize, readonly=readonly, sync=sync)
ok, so this is the problem:
(cpy39_1) (base) oberstet@intel-nuci7:~/scm/crossbario/crossbar$ find crossbar -name "*.py" -exec grep -Hi ".db-controller" {} \;
crossbar/master/node/controller.py: dbpath = config.get('path', '.db-controller')
crossbar/master/node/authenticator.py: dbpath = config.get('path', '.db-controller')
crossbar/master/node/node.py: dbpath = config.get('path', '.db-controller')
zlmdb has recently tightened its run-time checks, one of which ensure a given database is opened at most once within a single process.
https://github.com/crossbario/zlmdb/blob/c952f420212e5bea33690f2678fa161d920fc580/zlmdb/_database.py#L354
apparently, this is currently violated in _agg_metering_mworker_logs, which SHOULD use the DB handle already (somewhere) in the worker:
here is another instance