From dda291c079e6c8e074c99df1bfef52936d68fa1b Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Thu, 8 Jun 2006 05:38:11 +0000 Subject: [PATCH] * Turn the deadlock situation described in SF bug #775414 into a DBDeadLockError exception. * add the test case for my previous dbtables commit. --- Lib/bsddb/__init__.py | 1 + Lib/bsddb/test/test_dbtables.py | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/Lib/bsddb/__init__.py b/Lib/bsddb/__init__.py index c004c08a87e..d5ab000513a 100644 --- a/Lib/bsddb/__init__.py +++ b/Lib/bsddb/__init__.py @@ -344,6 +344,7 @@ def _openDBEnv(cachesize): else: raise error, "cachesize must be >= 20480" e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL) + e.set_lk_detect(db.DB_LOCK_DEFAULT) return e def _checkflag(flag, file): diff --git a/Lib/bsddb/test/test_dbtables.py b/Lib/bsddb/test/test_dbtables.py index 1128a5a44e1..26e3d3650bc 100644 --- a/Lib/bsddb/test/test_dbtables.py +++ b/Lib/bsddb/test/test_dbtables.py @@ -339,6 +339,16 @@ class TableDBTestCase(unittest.TestCase): conditions={'Name': dbtables.LikeCond('%')}, mappings={'Access': increment_access}) + try: + self.tdb.Modify(tabname, + conditions={'Name': dbtables.LikeCond('%')}, + mappings={'Access': 'What is your quest?'}) + except TypeError: + # success, the string value in mappings isn't callable + pass + else: + raise RuntimeError, "why was TypeError not raised for bad callable?" + # Delete key in select conditions values = self.tdb.Select( tabname, None,