示例#1
0
 def _check_tree(self, cn, tree):
     # Make sure the BTree is sane at the C level.
     retries = 3
     while retries:
         retries -= 1
         try:
             check(tree)
             tree._check()
         except ReadConflictError:
             if retries:
                 transaction.abort()
             else:
                 raise
         except:
             display(tree)
             raise
示例#2
0
 def _check_tree(self, cn, tree):
     # Make sure the BTree is sane at the C level.
     retries = 3
     while retries:
         retries -= 1
         try:
             check(tree)
             tree._check()
         except ReadConflictError:
             if retries:
                 transaction.abort()
             else:
                 raise
         except:
             display(tree)
             raise
示例#3
0
 def _check_threads(self, tree, *threads):
     # Make sure the thread's view of the world is consistent with
     # the actual database state.
     expected_keys = []
     errormsgs = []
     err = errormsgs.append
     for t in threads:
         if not t.added_keys:
             err("thread %d didn't add any keys" % t.threadnum)
         expected_keys.extend(t.added_keys)
     expected_keys.sort()
     actual_keys = list(tree.keys())
     if expected_keys != actual_keys:
         err("expected keys != actual keys")
         for k in expected_keys:
             if k not in actual_keys:
                 err("key %s expected but not in tree" % k)
         for k in actual_keys:
             if k not in expected_keys:
                 err("key %s in tree but not expected" % k)
     if errormsgs:
         display(tree)
         self.fail('\n'.join(errormsgs))