1. 17 Jan, 2003 9 commits
    • Guido van Rossum's avatar
    • Shane Hathaway's avatar
      Merged shane-local-transactions-branch. · aa7cb32d
      Shane Hathaway authored
      This change adds a new method, setLocalTransaction(), to the
      Connection class.  ZODB applications can call this method to bind
      transactions to connections rather than threads.  This is especially
      useful for GUI applications, which often have only one thread but
      multiple independent activities within that thread (generally one per
      window).  Thanks to Christian Reis for championing this feature.
      
      Applications that take advantage of this feature should not use the
      get_transaction() function.  Until now, ZODB itself sometimes assumed
      get_transaction() was the only way to get the transaction.  Minor
      corrections have been added.  The ZODB test suite, on the other hand,
      can continue to use get_transaction(), since it is free to assume that
      transactions are bound to threads.
      aa7cb32d
    • Tim Peters's avatar
      Fixing a rare BTree conflict resolution error. · 31847dca
      Tim Peters authored
      + Transaction T1 deletes some of the keys in bucket B,
        but not all of the keys.
      
      + Transaction T2 deletes (exactly) the keys in B that
        aren't deleted by T1.
      
      The version of B each transaction sees is then non-empty,
      but conflict resolution creates an empty bucket.  However,
      conflict resolution doesn't have enough info to unlink an
      empty bucket from its containing BTree correctly.
      
      The result is that an empty bucket is left in the BTree,
      which violates a BTree invariant.  The most probable
      symptom is a segfault, when later & unrelated code tries
      to access this bucket:  an empty bucket has NULL
      pointers where the vectors of keys and values should be,
      and accessing code tries to dereference the NULL pointers.
      
      I don't know that this error has been seen in real life.
      It was provoked by a randomized multithreaded simulation
      program that was trying to provoke errors.  This error was
      provoked frequently by that program; no other kinds of
      errors have come out of it.
      31847dca
    • Jeremy Hylton's avatar
      Change handling of tpc_abort() during disconnection. · 4814babf
      Jeremy Hylton authored
      Fix likely bug where calling tpc_abort() after a client disconnected
      did not properly clear the client's internal state about the
      transaction.  The change means that tpc_abort() will never raise a
      ClientDisconnected error, even when disconnected.
      
      Added a new test that sort-of covers this case and deleted another
      that was testing, in part, that you did get a ClientDisconnected
      error.
      4814babf
    • Guido van Rossum's avatar
      399f0824
    • Guido van Rossum's avatar
      94a1c7bc
    • Guido van Rossum's avatar
      Remove tests for runsvr. · d99af602
      Guido van Rossum authored
      d99af602
    • Guido van Rossum's avatar
      Rename runsvr.py to runzeo.py · 20a214cc
      Guido van Rossum authored
      20a214cc
    • Guido van Rossum's avatar
      New options class, using zdoptions.py. · c2e4c08f
      Guido van Rossum authored
      c2e4c08f
  2. 16 Jan, 2003 9 commits
  3. 15 Jan, 2003 8 commits
  4. 14 Jan, 2003 14 commits