1. 16 Apr, 2004 1 commit
  2. 17 Mar, 2004 1 commit
    • Tim Peters's avatar
      By popular demand, FileStorage.pack() no longer propagates a · 19cdc300
      Tim Peters authored
          FileStorageError:  The database has already been packed to a
          later time or no changes have been made since the last pack
      
      exception.  Instead that message is logged (at INFO level), and
      the pack attempt simply returns then (no pack is performed).
      
      Incidentally, this should repair frequent reports of failure in the
      new checkPackLotsWhileWriting test.  On non-Windows systems, it
      seems that the worker thread often didn't get enough cycles to commit
      a change between the main thread's attempts to run pack() (and so
      the exception above got raised then).
      19cdc300
  3. 16 Mar, 2004 1 commit
    • Tim Peters's avatar
      Bugfix for pack(). Approximately forever, we've seen extremely rare · 968efe37
      Tim Peters authored
      failures in the ZEO FileStorage pack-while-writing tests, where they die
      with
          CorruptedError: ... transaction with checkpoint flag set
      
      By coincidence, the same kind of death during pack() was reported on
      zodb-dev today(!).  The new checkPackLotsWhileWriting test provokes this
      on my box reliably (failed each time it was run).
      
      The problem appears to be that pack's idea of where a FileStorage
      ends was obtained merely by seeking to the end of the file.  But if
      a transaction is in progress, there can be an extra "not really there
      yet" transaction at the end of the file, and when either buildPackIndex()
      or findReachableFromFuture() bumped into a such a thing, the CorruptedError
      above got raised.  This is always rare, and was exceedingly rare before
      because only one pack per test was tried.  The new test tries packing
      repeatedly while a thread keeps hammering the database, so is much more
      likely to provoke the problem.
      
      The fix amounts to passing FileStorage._pos to the pack code, telling
      the latter directly where the legit transactions in the file end.
      968efe37
  4. 11 Feb, 2004 1 commit