I am using repoze.zodbconn in a BFG application but I suspect it is not working as it should be: as soon as multiple requests come in at the same time I get a lot of locking errors and broken results:
LockError: Couldn't lock '/Users/wichert/Work/code/buildout/blackbox/var/Data.fs.lock' The way I've setup repoze.zodbconn is from repoze.zodbconn.finder import PersistentApplicationFinder from myproject import appmaker finder = PersistentApplicationFinder(settings["zodb.url"], appmaker) def get_root(request): return finder(request.environ) return get_root the get_root method then serves as the root factory for BFG. What I think is happening is that get_root is called for every request. get_root then calls the PersistentApplicationFinder which tries to open a new ZODB connection, which fails if another thread already has an open connection to the same FileStorage. What I think should be done is to open the ZODB connection on app startup and only appmaker(conn.root90) per request. ZODB should then care of per-thread connection management itself. I see no way to accomplish that using the code in repoze.zodbconn, so I am wondering if I missed something critical or if this is indeed a bug in repoze.zodbconn. Wichert. _______________________________________________ Repoze-dev mailing list Repoze-dev@lists.repoze.org http://lists.repoze.org/listinfo/repoze-dev