1. 17 Jan, 2003 9 commits
    • Guido van Rossum's avatar
    • Shane Hathaway's avatar
      Merged shane-local-transactions-branch. · 93a40774
      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.
      93a40774
    • Tim Peters's avatar
      Fixing a rare BTree conflict resolution error. · 9259274f
      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.
      9259274f
    • Jeremy Hylton's avatar
      Change handling of tpc_abort() during disconnection. · e289ccef
      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.
      e289ccef
    • Guido van Rossum's avatar
      1e51dc49
    • Guido van Rossum's avatar
      b19ecadc
    • Guido van Rossum's avatar
      Remove tests for runsvr. · d56f6a9e
      Guido van Rossum authored
      d56f6a9e
    • Guido van Rossum's avatar
      Rename runsvr.py to runzeo.py · ddc2343e
      Guido van Rossum authored
      ddc2343e
    • Guido van Rossum's avatar
      New options class, using zdoptions.py. · c6af0df3
      Guido van Rossum authored
      c6af0df3
  2. 16 Jan, 2003 9 commits
  3. 15 Jan, 2003 8 commits
  4. 14 Jan, 2003 14 commits