1. 07 Aug, 2005 3 commits
  2. 04 Aug, 2005 3 commits
    • Tim Peters's avatar
      An internal 3.4.1b3 release. · fc43960e
      Tim Peters authored
      fc43960e
    • Tim Peters's avatar
      Plug leaks in the ZEO client cache. · 27464d77
      Tim Peters authored
      ClientCache._evicted():  When deleting the last range of
      non-current tids for an oid, remove the list from the
      noncurrent dict instead of leaving an empty list sitting
      there forever.  This also required adjusting the side-
      effect dance in ClientCache._remove_noncurrent_revisions().
      
      FileCache._makeroom():  This was the major leak -- it
      neglected to remove an evicted object's Entry from the
      key2entry dict.
      27464d77
    • Philipp von Weitershausen's avatar
      Merge r37707 from the trunk: · ceaf402f
      Philipp von Weitershausen authored
        Merge the philikon-zeo-scripts branch:
          move things around so that zeo scripts are installed for
          standalone zodb releases but not for zope releases
      ceaf402f
  3. 02 Aug, 2005 1 commit
  4. 01 Aug, 2005 2 commits
  5. 29 Jul, 2005 2 commits
    • Tim Peters's avatar
      7f94c939
    • Tim Peters's avatar
      Removed the `key2size` OIBTree. · 5664b307
      Tim Peters authored
      Maintaining this is a significant expense; the code didn't
      make real use of it; and every time I've tried to exploit it
      I've ended up with grossly too-large simulated hit rates.
      Would probably take another day to figure out exactly why that
      is, and the simulated rates are "good enough" now without it.
      5664b307
  6. 26 Jul, 2005 4 commits
    • Tim Peters's avatar
      An internal 3.4.1b1 release. · 8a4983e8
      Tim Peters authored
      8a4983e8
    • Tim Peters's avatar
      More words; update examples w/ new output. · 04d1d290
      Tim Peters authored
      04d1d290
    • Tim Peters's avatar
      The cache simulation seems good enough to be useful now, · b2d53a75
      Tim Peters authored
      although the toy app I wrote to generate a 500MB trace
      file doesn't use MVCC in an essential way (some of the
      MVCC simulation code is nevertheless exercised, since
      an invalidation of current data in the presence of MVCC
      always creates a cache record for the newly non-current
      revision).
      
      Still puzzling over what to do when the trace file records
      a load hit but the simulated cache gets a miss.  The
      old simulation code seemed to assume that a store for the same
      oid would show up in the trace file next, and it could get
      the info it needed about the missing object from the store
      trace.  But that isn't true:  precisely because the load was
      a hit in the trace file, the object isn't going to be stored
      again "soon" in the trace file.
      
      Here are some actual-vs-simulated hit rate results, for a
      20MB cache, with a trace file covering about 9 million
      loads, over 3 ZEO client (re)starts:
      
      actual   simulated
      ------   ---------
        93.1        92.7
        79.8        79.0
        68.0        69.1
            
        81.4        81.1  overall
      
      Since the simulated hit rates are both higher and lower
      than the actual hit rates, that argues against a gross
      systematic bias in the simulation (although there may
      be several systematic biases in opposite directions).
      b2d53a75
    • Tim Peters's avatar
      Massive rewrite to make simul.py's circular cache aware of · 9c47277a
      Tim Peters authored
      MVCC.  It isn't blowing up, but it thinks the hit rate is
      100% -- might have missed something there <wink>.
      9c47277a
  7. 25 Jul, 2005 1 commit
    • Tim Peters's avatar
      More steps on the way toward having useful cache simulation. · 15bb2e12
      Tim Peters authored
      I think the primary hangup now is that simul.py doesn't know
      anything about MVCC.  As a result, it thinks there's significatly
      more free space in the cache than there really is, and that
      probably accounts for it predicting significantly higher hit
      rates than I actually see.
      15bb2e12
  8. 23 Jul, 2005 1 commit
  9. 22 Jul, 2005 5 commits
  10. 21 Jul, 2005 1 commit
    • Tim Peters's avatar
      ClientCache: made it a new-style class. · fdb78a64
      Tim Peters authored
      FileCache:  Removed the reuse= argument.  IIRC, it made some sense
      when different cache schemes were first being tried, but complicated
      the logic now to no good end.
      
      Nuked the maddening log warnings about reuse=True.  They were never
      helpful and were often confusing.
      
      Added info-level log messages to record the path of the client cache
      file, whether it's persistent or temporary, and if it's persistent
      whether we're creating or reusing it.
      
      Minor changes to comments.
      fdb78a64
  11. 20 Jul, 2005 1 commit
  12. 19 Jul, 2005 2 commits
  13. 18 Jul, 2005 2 commits
    • Tim Peters's avatar
      Collector 1843: IISet.keys: bad exception handling. · e75e2c06
      Tim Peters authored
      Bucket_rangeSearch():  De-obfuscated the calls to
      Bucket_findRangeEnd(), so that they stop ignoring
      the latter's error returns (a mind-bending combination
      of embedded assignment nested in an UNLESS macro,
      seemingly copy+paste'd so that the error occurred twice).
      e75e2c06
    • Tim Peters's avatar
      Port from ZODB 3.2. · ad2fef94
      Tim Peters authored
      Collector #1846:  If an uncommitted transaction was found, fsrecover.py
      fell into an infinite loop.  Fixed that, and added a new test
      (testUncommittedAtEnd) to ensure this stays fixed.
      ad2fef94
  14. 12 Jul, 2005 3 commits
  15. 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
  16. 08 Jul, 2005 1 commit
  17. 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
  18. 02 Jul, 2005 3 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