1. 17 Jan, 2003 9 commits
    • Guido van Rossum's avatar
    • Shane Hathaway's avatar
      Merged shane-local-transactions-branch. · 5ddbba39
      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.
      5ddbba39
    • Tim Peters's avatar
      Fixing a rare BTree conflict resolution error. · d52b5766
      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.
      d52b5766
    • Jeremy Hylton's avatar
      Change handling of tpc_abort() during disconnection. · b3667600
      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.
      b3667600
    • Guido van Rossum's avatar
      612ba49e
    • Guido van Rossum's avatar
      d58266f7
    • Guido van Rossum's avatar
      Remove tests for runsvr. · 6c6d032e
      Guido van Rossum authored
      6c6d032e
    • Guido van Rossum's avatar
      Rename runsvr.py to runzeo.py · 5a8f1c58
      Guido van Rossum authored
      5a8f1c58
    • Guido van Rossum's avatar
      New options class, using zdoptions.py. · 8be11e4a
      Guido van Rossum authored
      8be11e4a
  2. 16 Jan, 2003 9 commits
  3. 15 Jan, 2003 8 commits
  4. 14 Jan, 2003 14 commits