1. 12 Jul, 2005 4 commits
  2. 11 Jul, 2005 2 commits
    • Tim Peters's avatar
      Merge tim-savepoint branch. · 5eb8844d
      Tim Peters authored
      Allow rollback to a given savepoint multiple times.
      
      transaction/_transaction.py
          _remove_and_invalidate_after():  Don't remove the
          argument savepoint from the savepoint stack anymore.
      
          abort():  abort(True) relied on the subtxn savepoint
          being invalidated as a side effect of rolling back
          to it.  Invalidate it explicitly now.
      
          Savepoint.rollback():  Don't invalidate self.
      
      ZODB/Connection.py
          Connection._rollback():  Pass a temp container to
          _cache.invalidate(), because that method clears the
          container as a side effect.  Clearing the index
          in a savepoint was a disaster if the savepoint was
          used again.
      
          TmpStore.reset():  Make a copy of the argument index.
          An alternative would be to make all callers make
          copies, but the only caller now thinks of its `state`
          argument as being opaque.
      
      transaction/savepoint.txt
      ZODB/tests/{testSubTransaction.py, testConnectionSavepoint.txt}
          Test the new semantics, and beef up the tests.
      
      transaction/tests/savepointsample.py
          _rollback_savepoint():  Needed to copy the data.
      5eb8844d
    • Tim Peters's avatar
      English repairs. · bc4b3339
      Tim Peters authored
      bc4b3339
  3. 08 Jul, 2005 1 commit
  4. 05 Jul, 2005 3 commits
    • Tim Peters's avatar
      Simplify. · f6bcfd78
      Tim Peters authored
      Primarily, _tindex should have been a dict all along, pack()
      worked too hard at the end, and loadEx() is a minor variant
      of load().
      f6bcfd78
    • Tim Peters's avatar
      load() and loadEx(): eliminate gratuitous differences. · ab371f52
      Tim Peters authored
      Ideally, load() should call loadEx() instead, but we really
      don't want "an extra" Python-level call here (heavily used).
      
      loadEx():  deleted pointless call of self._read_txn_header().
      
      ServerStub.loadEx() comments:  these were obviously wrong in
      several ways, but I don't know the full truth.  Better to
      say so up front than to leave them clearly wrong, though.
      ab371f52
    • Tim Peters's avatar
      Collector 1831. · 048c040e
      Tim Peters authored
      The BTree minKey() and maxKey() methods gave a misleading message if no key
      satisfying the constraints existed in a non-empty tree.
      048c040e
  5. 02 Jul, 2005 4 commits
    • Tim Peters's avatar
      An internal 3.4.1a3 release. · ee4b2b7b
      Tim Peters authored
      ee4b2b7b
    • Tim Peters's avatar
      Collector #1830. · 05c4adb8
      Tim Peters authored
      In some error cases when reading a FileStorage index, the
      code referenced an undefined global.
      05c4adb8
    • Tim Peters's avatar
      Get rid of all code defining or referencing t32. · 85fe15bb
      Tim Peters authored
      Such code never made sense; it was all of the form
      
          t32 = 1L << 32
          if something < 0:
              something = t32 - something
      
      which is a way to change negative integers into
      gigantic positive integers greater than 4 billion, and
      never made sense in context.  Possibly
      
              something = t32 + something
      
      was intended, but that never made sense in context either.
      
      In any case, `something` is invariably obtained from
      struct.unpack using the "H" format code, and that never
      returns a negative integer to begin with.
      85fe15bb
    • Tim Peters's avatar
      28c6dd29
  6. 01 Jul, 2005 2 commits
    • Tim Peters's avatar
      Collector 1829. · b8d2190f
      Tim Peters authored
      Clarified that the ``minKey()`` and ``maxKey()`` methods raise an exception
      if no key exists satsifying the constraints.
      
      Also improved the English in other interface docstrings.
      b8d2190f
    • Florent Guillaume's avatar
      Ignore *.so files. · 273aad4d
      Florent Guillaume authored
      273aad4d
  7. 29 Jun, 2005 3 commits
    • Tim Peters's avatar
      An internal 3.4.1a3 release. · a1e6c1c5
      Tim Peters authored
      a1e6c1c5
    • Tim Peters's avatar
      Repaired ReST markup in new UndoLog item. · e17b104a
      Tim Peters authored
      e17b104a
    • Tim Peters's avatar
      Collector 1822. · 7f1f6deb
      Tim Peters authored
      Make undo{Log,Info} arguments act like Python slice indices when
      both are non-negative.  The code used to do that before ZODB 3.4a9,
      but changed to match ZODB's UML documentation.  Alas, some
      (untested) code in Zope relied on the actual behavior (see the
      collector report).  Changed code, docs, and tests to bless the
      old behavior in these cases.
      
      DemoStorage.UndoLog:  this was wrong in several ways.  I'm still
      unsure about why it skips "packed" transactions.  That doesn't seem
      right, but I don't have time to wonder about that now.
      7f1f6deb
  8. 27 Jun, 2005 1 commit
  9. 24 Jun, 2005 1 commit
    • Tim Peters's avatar
      _triggerbase: Make new-style class, for better debugability. · b84e138b
      Tim Peters authored
      Windows trigger.__init__:  Simplify more.  The trigger can connect
      after the other end has done  bind() and listen(); no need to wait
      for an accept() too, and so no need to fiddle with blocking/
      non-blocking or "expected" socket.error's either.
      b84e138b
  10. 22 Jun, 2005 1 commit
    • Tim Peters's avatar
      Largely rewritten. · ebdf3a63
      Tim Peters authored
      remove_loop_callback():  There were two definitions of this function.
      Deleted one, changed the other to use enumerate().
      
      poll():  This was trying to repair a bug in Python 2.2's asyncore.poll().
      2.2 is no longer supported, so removed this poll().
      
      _start_loop(), _stop_loop():  Removed; functionality folded into
      reworked loop().
      
      loop():  The signature of asyncore.loop() changed in 2.4, but this
      still had "the old" signature.  Instead of sniffing the signature
      of the Python in use, this does a saner thing:  the original
      asyncore.loop is captured, and called from the body of this loop().
      That way, (A) we don't care what asyncore.loop's signature is; and,
      (B) we still call the original Python code, so debugging prints and
      breakpoints (etc) stuffed into Python's asyncore no longer "vanish
      by magic" when ZEO is used.
      ebdf3a63
  11. 21 Jun, 2005 1 commit
    • Tim Peters's avatar
      Massive refactoring, to move the bulk of the trigger code into · 80343fd8
      Tim Peters authored
      an OS-indepedent base class.
      
      __repr__:  Use the postive_id function to embed the machine address.
      Addresses with the high bit set trigger warnings before Python 2.4,
      and come out as negative numbers in 2.4+.
      
      Windows trigger.__init__:  Don't make 50 guesses at a port number
      to use, let Windows pick an available port for us.  Also documented
      the baffling single-thread socket setup dance, which took an hour to
      reverse-engineer (in large part because it used a bare "except" w/ no
      clue as to why).
      80343fd8
  12. 16 Jun, 2005 2 commits
  13. 14 Jun, 2005 1 commit
  14. 09 Jun, 2005 2 commits
  15. 06 Jun, 2005 4 commits
  16. 03 Jun, 2005 2 commits
  17. 02 Jun, 2005 4 commits
  18. 31 May, 2005 2 commits