1. 06 May, 2005 4 commits
    • Tim Peters's avatar
      Fix obscure bug. · 09728090
      Tim Peters authored
      If a threaded transaction manager ever passed None to
      the Transaction constructor's `synchronizers` argument, then
      synchronizers registered later in the same transaction
      were invisible to the transaction, and so their afterCompletion()
      methods wouldn't get called when the transaction ended.
      09728090
    • Tim Peters's avatar
      2b790fba
    • Tim Peters's avatar
      Make an internal 3.4a6 release, primarily for Zope 2.8. · 9b42a5e0
      Tim Peters authored
      This is effectively a beta release, but I don't want to
      take the time to do a full-blown release right now.
      9b42a5e0
    • Tim Peters's avatar
      ISynchronizer grows a newTransaction() method, called · 476e7bd8
      Tim Peters authored
      whenever TransactionManager.begin() is called.
      
      Connection implements that, and changes its ISynchronizer
      afterCompletion() method, to call sync() on its storage
      (if the storage has such a method), and to process
      invalidations in any case.
      
      The bottom line is that storage sync() will get done "by
      magic" now after top-level commit() and abort(), and after
      explicit TransactionManager.begin().  This should make it
      possible to deprecate Connection.sync(), although I'm not
      doing that yet.  Made a small but meaningful start by
      purging many sync() calls from some of the nastiest ZEO
      tests -- and they still work fine.
      476e7bd8
  2. 03 May, 2005 1 commit
    • Tim Peters's avatar
      Partial savepoint review. · e3f4fb77
      Tim Peters authored
      Added more comments.  Changed some comments to English.
      Renamed some attributes and methods for clarity.
      Switched to using a Python WeakKeyDictionary instead of
      rolling our own out of a Python dict and raw weakrefs.
      e3f4fb77
  3. 02 May, 2005 1 commit
    • Tim Peters's avatar
      Port from ZODB 3.2. · 4fee6a4b
      Tim Peters authored
      Added new test checkSubtxnCommitDoesntGetInvalidations to
      verify that a longstanding bug in subtransaction commit is
      repaired.
      
      Jim (Fulton) discovered this in ZODB 3.4's code, while implementing
      savepoint/rollback.  Same bugs had been there at least since ZODB 3.1.
      
      Also added news about the bug.
      4fee6a4b
  4. 28 Apr, 2005 1 commit
  5. 27 Apr, 2005 2 commits
    • Jim Fulton's avatar
      Fixed stupid bug. · 3ddf5afa
      Jim Fulton authored
      3ddf5afa
    • Jim Fulton's avatar
      Changed the strategy for managing savepoints. The requirements · f9de1eed
      Jim Fulton authored
      for savepoint management are:
      
      - All savepoints for a transaction should be invalidated when the
        transaction commits or aborts
      
      - If a savepoint is rolled back, then all savepoints after it within 
        a transaction must be invalidated.
      
      We previously implemented these requirements by organizing transaction
      savepoints into a doubly linked list.  This was overkill.  We didn't
      have need for such fine-grained ordering.  This strategy had the
      disadvantage that it kept all savepoints around until the transaction
      ended.  Savepoints could be expensive to keep and it's possible that
      some applications could keep a lot of them.
      
      The new stragey is to:
      
      - Keep weak references to savepoints.  We can forget about savepoints
        that the application isn't using.  Any resources used by these
        savepoints can be freed.
      
      (We have to keep a strong reference to the last savepoint used for
        a subtransaction.)
      
      - We assign indexes to savepoints within a transaction.  When a
        savepoint is rolled back, in addition to invalidating that
        savepoint, we also invalidate savepoints with a higher index.
      
      A side effect of this change is that code using the savepoint API
      should interfere less with code using subtransactions.  Of course, we
      really need to phase out code that uses subtransactions.
      
      It is likely that we can leverage this change in strategy to speed
      creation of ZODB connection savepoints.  Creating a ZODB connection
      savepoint now requires copying the savepoint storage index.  This
      index could become large.  If applications aren't holding on to old
      savepoints, then it is possible that we could avoid this copy.
      f9de1eed
  6. 26 Apr, 2005 3 commits
  7. 25 Apr, 2005 8 commits
  8. 24 Apr, 2005 9 commits
  9. 23 Apr, 2005 1 commit
  10. 22 Apr, 2005 3 commits
    • Tim Peters's avatar
      Port ZEO changes for Windows from ZODB 3.2. · 555f6432
      Tim Peters authored
      In addition, repaired the useless default logging in runzeo.py.
      
      Here's Sidnei's Zope 2.7 checkin comment:
      
      * Borrow Zope's 'Signal' mechanism for Windows, if available, to
        implement clean shutdown and log rotation handlers for Windows.
      
      * Back to creating a .PID for ZEO, so external programs that wish to set
        the 'signal' can get the PID and therefore derive the signal name.
        Currently only necessary on Windows but created on all platforms which
        implement os.getpid(), as long as the 'pid-filename' option is set,
        or the 'INSTANCE_HOME' environment variable can be found.
      555f6432
    • Tim Peters's avatar
      Port from ZODB 3.2. · 056eaa64
      Tim Peters authored
      DemoStorage:  Added implementations for registerDB() and new_oid().  As
      Tres discovered the hard way, wrapping a ZEO client storage as a
      DemoStorage base storage yields insane behavior otherwise.
      
      BaseStorage.new_oid():  Rewrite to eliminate recursion, and hence also the
      need for the undocumented and irregular `last=` argument.
      
      Other:  removed the `last=` argument to new_oid() every place that felt
      compelled to spread that insanity ;-).  Seriously, it served no purpose
      at all elsewhere, and looks like people just cut 'n pasted in fear.
      056eaa64
    • Tim Peters's avatar
      Delayed news about old fsdump improvement. · 1784f286
      Tim Peters authored
      1784f286
  11. 14 Apr, 2005 1 commit
  12. 13 Apr, 2005 3 commits
  13. 10 Apr, 2005 1 commit
    • Tim Peters's avatar
      test_cache(): Muck with Python's warnings module. · 43ebe4b6
      Tim Peters authored
      The test didn't work if run more than once (e.g., via Zope3's
       test.py's "-N <n>" argument, or via ZODB's test.py's "-L"
      argument), because the warnings module suppresses warnings
      after the first a single line.  Made the warnings module
      report repeats of DeprecationWarnings for the duration of
      the test.
      43ebe4b6
  14. 07 Apr, 2005 1 commit
    • Tim Peters's avatar
      Merge ZODB/branches/efge-beforeCommitHook. · cf0782f0
      Tim Peters authored
      This is Florent Guillaume's branch, giving transaction objects
      a new beforeCommitHook() method, as proposed by Jim Fulton on
      zodb-dev.  Some changes were made to the branch code (comments,
      more tests, more words in the docs).
      cf0782f0
  15. 06 Apr, 2005 1 commit
    • Tim Peters's avatar
      Merge the ZODB part of Zope/branches/jim-fix-zclasses. · 05128835
      Tim Peters authored
      This doesn't have a lot of visible effect on standalone ZODB use, but
      is important for Zope 2.8.
      
      Here are checkin msgs from the branch relating to ZODB code:
      
          r29872 | jim | 2005-04-04 07:04:39 -0400 (Mon, 04 Apr 2005) | 3 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/ZODB/serialize.py
      
          For instances of persistent classes, save a class-module/clas-name
          tuple if the class has a non-empty module string.
      
          ------------------------------------------------------------------------
          r29871 | jim | 2005-04-04 07:04:33 -0400 (Mon, 04 Apr 2005) | 6 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/ZODB/Connection.py
      
          Changed sub-transaction abort code to not invalidate created objects.
          There's really no point, because created objects will be unreachable
          after invalidating old objects.  Also, if a created object is
          non-ghostifiable, it will try to load it's state again, and then
          either it would fail or it would load non-committed state.
      
          ------------------------------------------------------------------------
          r29870 | jim | 2005-04-04 07:04:27 -0400 (Mon, 04 Apr 2005) | 3 lines
          Changed paths:
             A /Zope/branches/jim-fix-zclasses/lib/python/ZODB/persistentclass.py
             A /Zope/branches/jim-fix-zclasses/lib/python/ZODB/persistentclass.txt
             A /Zope/branches/jim-fix-zclasses/lib/python/ZODB/tests/testpersistentclass.py
      
          Added ZClass-independent test of (and possible base class for)
          persistent-class support machinery.
      
          ------------------------------------------------------------------------
          r29867 | jim | 2005-04-04 07:03:48 -0400 (Mon, 04 Apr 2005) | 2 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/transaction/_manager.py
      
          Added missing arguments to commit and abort.
      
          ------------------------------------------------------------------------
          r29774 | jim | 2005-04-01 06:24:27 -0500 (Fri, 01 Apr 2005) | 3 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/transaction/__init__.py
      
          Changed to use methods of a threaded manager directly, rather than
          through wrapper functions.
      
          ------------------------------------------------------------------------
          r29773 | jim | 2005-04-01 06:24:25 -0500 (Fri, 01 Apr 2005) | 3 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/transaction/_manager.py
      
          Added commit and abort methods to transaction managers.
          This makes direcr use of managers simpler.
      
          ------------------------------------------------------------------------
          r29101 | jim | 2005-02-10 07:44:52 -0500 (Thu, 10 Feb 2005) | 2 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/ZODB/Connection.py
      
          Removed an unused attribute.
      
          ------------------------------------------------------------------------
          r29100 | jim | 2005-02-10 07:42:35 -0500 (Thu, 10 Feb 2005) | 3 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/transaction/_transaction.py
      
          Changed an XXX comment to an ordinary comment, explaining the relevent
          issue.
      
          ------------------------------------------------------------------------
          r29099 | jim | 2005-02-10 07:41:58 -0500 (Thu, 10 Feb 2005) | 3 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/ZODB/Connection.py
      
          Changed some XXX comments to ordinary comments explaining the relevent
          issues.
      
          ------------------------------------------------------------------------
          r29071 | jim | 2005-02-07 07:36:05 -0500 (Mon, 07 Feb 2005) | 3 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/transaction/_transaction.py
      
          Added a sanity check to avoid registration of objects without a
          manager. (Perhaps this should be an assert.)
      
          ------------------------------------------------------------------------
          r29067 | jim | 2005-02-07 07:35:56 -0500 (Mon, 07 Feb 2005) | 15 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/ZODB/Connection.py
      
          Changed the strategy for handling invalidation of classes.
          No-longer use setklassstate.  Instead, just call _p_invalidate, as
          with any other object.  This changes didn't break any tests, so I
          assume that this was untested. :(
      
          Changed the strategy for invalidating objects.  Non-ghostifiable
          objects will load their state when they are invalidated.  We have to
          worry about other invalidations that come in while this is happening.
          See the comment in _flush_invalidations.
      
          We need to force all invalidations to take this into account, by going
          through _flush_invalidations.  I haven't done this yet, but I have
          left some XXX comments in places where it needs to be done to remind
          myself that this needs to be done.
      
          ------------------------------------------------------------------------
          r29066 | jim | 2005-02-07 07:35:54 -0500 (Mon, 07 Feb 2005) | 8 lines
          Changed paths:
             M /Zope/branches/jim-fix-zclasses/lib/python/persistent/cPickleCache.c
      
          Changed the strategy for handling invalidation of classes.
          No-longer use setklassstate.  Instead, just call _p_invalidate, as
          with any other object.  This changes didn't break any tests, so I
          assume that this was untested. :(
      
          Change invalidation to not swallow errors. (Swallowing errors here was a
          travesty!)
      05128835