1. 11 Aug, 2004 6 commits
    • Tim Peters's avatar
      7f0218dc
    • Tim Peters's avatar
      ad97a3ca
    • Tim Peters's avatar
      f2d3aa43
    • Tim Peters's avatar
      27c47f77
    • Tim Peters's avatar
      Merge rev 26990 from ZODB trunk. · a91b1d4c
      Tim Peters authored
      Improve thread-death error reporting in tests.
      
      Reworked the way some of the ZEO tests use threads, so that unittest is
      more likely to notice the real cause of a failure (which usually occurs in
      a thread), and less likely to latch on to spurious problems resulting from
      the real failure.
      
      Detail:  The TestThread class got the (unittest) test case as an argument,
      and remembered it.  If the run() method saw the thread die with an
      exception, it called testcase.fail() with the formatted exception.  But
      this can't work as apparently intended:  unittest's fail() raises an
      AssertionError then, and the piece of unittest running the test expects
      to catch that exception and append the message to the result object's
      list of failures.  But the piece of unittest running the test isn't on
      *this* thread's call stack!  It's on the main thread's call stack.
      So unittest simply raised an exception that wasn't noticed by anything,
      and the thread died then, leaving a traceback somewhere in the middle
      of the output.  unittest didn't know anything about that, and sometimes
      thought the test passed despite the thread failure.
      
      Alas, when a thread dies like this it's also got a decent chance of
      leaving things in a state where the test's final checking code can't
      succeed, but the checking code doesn't know the thread died either,
      and spurious unittest failures and errors could get reported then.
      
      Reworked things so that only the main thread ever tries to tell
      unittest that a test failed.  A TestThread remembers an exception-
      death now, but doesn't report it until the main thread tries to join
      it.  This way unittest knows the test failed; records and reports
      the true cause of failure; and, because tests generally join all their
      threads before doing their final checking, unittest stops the test
      before final checking if a thread death occurred, and so there's
      less chance of seeing reports of spurious errors and failures.
      a91b1d4c
    • Tim Peters's avatar
      Improve thread-death error reporting in tests. · d0268448
      Tim Peters authored
      Reworked the way some of the ZEO tests use threads, so that unittest is
      more likely to notice the real cause of a failure (which usually occurs in
      a thread), and less likely to latch on to spurious problems resulting from
      the real failure.
      
      Detail:  The TestThread class got the (unittest) test case as an argument,
      and remembered it.  If the run() method saw the thread die with an
      exception, it called testcase.fail() with the formatted exception.  But
      this can't work as apparently intended:  unittest's fail() raises an
      AssertionError then, and the piece of unittest running the test expects
      to catch that exception and append the message to the result object's
      list of failures.  But the piece of unittest running the test isn't on
      *this* thread's call stack!  It's on the main thread's call stack.
      So unittest simply raised an exception that wasn't noticed by anything,
      and the thread died then, leaving a traceback somewhere in the middle
      of the output.  unittest didn't know anything about that, and sometimes
      thought the test passed despite the thread failure.
      
      Alas, when a thread dies like this it's also got a decent chance of
      leaving things in a state where the test's final checking code can't
      succeed, but the checking code doesn't know the thread died either,
      and spurious unittest failures and errors could get reported then.
      
      Reworked things so that only the main thread ever tries to tell
      unittest that a test failed.  A TestThread remembers an exception-
      death now, but doesn't report it until the main thread tries to join
      it.  This way unittest knows the test failed; records and reports
      the true cause of failure; and, because tests generally join all their
      threads before doing their final checking, unittest stops the test
      before final checking if a thread death occurred, and so there's
      less chance of seeing reports of spurious errors and failures.
      d0268448
  2. 27 Jul, 2004 4 commits
    • Tim Peters's avatar
      Merge rev 26799 from 3.3 branch. · 1fb1c687
      Tim Peters authored
      Repair type in pack() docstring.
      1fb1c687
    • Tim Peters's avatar
      Repair type in pack() docstring. · 5df70e7a
      Tim Peters authored
      5df70e7a
    • Tim Peters's avatar
      Merge r26771 from 3.3 branch. · 63f9df11
      Tim Peters authored
      repozo improvement suggested by Toby Dickenson.
      
      Write backups to a temp file first; flush and fsync when done;
      only then rename; in case of a crash, no relevant damaged file
      will be left behind then.  And on Windows, Python's os.fsync()
      is necessary to convince the OS to write anything to disk.
      63f9df11
    • Tim Peters's avatar
      repozo improvement suggested by Toby Dickenson. · d8381176
      Tim Peters authored
      Write backups to a temp file first; flush and fsync when done;
      only then rename; in case of a crash, no relevant damaged file
      will be left behind then.  And on Windows, Python's os.fsync()
      is necessary to convince the OS to write anything to disk.
      d8381176
  3. 11 Jul, 2004 2 commits
  4. 10 Jul, 2004 2 commits
    • Tim Peters's avatar
      Forward port from Zope 2.7 branch, by way of the 3.3 branch. · a381fa6c
      Tim Peters authored
      Repaired a bug wherein spurious error msgs could be produced after
      reporting a problem with an unloadable object (discovered by eyeball,
      while staring at the code to figure out what it actually does).
      
      Vastly expanded the module docstring, with a slimmed-down version of
      the new fsrefs docs on the ZODB Wiki.
      
      a381fa6c
    • Tim Peters's avatar
      Forward port from Zope 2.7 branch. · b6716261
      Tim Peters authored
      Repaired a bug wherein spurious error msgs could be produced after
      reporting a problem with an unloadable object (discovered by eyeball,
      while staring at the code to figure out what it actually does).
      
      Vastly expanded the module docstring, with a slimmed-down version of
      the new fsrefs docs on the ZODB Wiki.
      
      b6716261
  5. 08 Jul, 2004 2 commits
    • Tim Peters's avatar
      Port rev 26199 from the 3.3 branch. · df23d95f
      Tim Peters authored
      Zope3-dev Collector #139: Memory leak involving buckets and connections
      
      Connection objects were typically immortal because the threaded
      transaction manager kept them in ever-growing lists.  Reworked the
      transaction manager internals to use a simple implementation of weak sets
      instead.  This plugs all leaks in the test program attached to the
      collector report (which was leaking about 100KB/sec on my box).
      df23d95f
    • Tim Peters's avatar
      Zope3-dev Collector #139: Memory leak involving buckets and connections · 1cf893ae
      Tim Peters authored
      Connection objects were typically immortal because the threaded
      transaction manager kept them in an ever-growing lists.  Reworked the
      transaction manager internals to use a simple implementation of weak sets
      instead.  This plugs all leaks in the test program attached to the
      collector report (which was leaking about 100KB/sec on my box).
      1cf893ae
  6. 02 Jul, 2004 2 commits
    • Tim Peters's avatar
      Collector #1397: testTimeStamp fails on FreeBSD · a8ee9544
      Tim Peters authored
      Forward-porting from Zope 2.7.
      Merged from 3.3 branch, revision 26085.
      
      The checkFullTimeStamp() test was sensitive to unique mktime() behavior
      on FreeBSD.  See:
      
      http://lists.freebsd.org/pipermail/freebsd-standards/2003-November/000268.html 
      
      The purpose of this test is to exercise ZODB's TimeStamp object, so got
      rid of dependence on platform mktime() and time.timezone quirks --
      TimeStamp works in GMT, so how mktime() treats tm_isdst should be
      irrelevant in all TimeStamp tests.
      
      Also added a comment about the highly non-obvious numeric characteristics
      of TimeStamp's treatment of seconds (round-tripping is surprisingly
      inaccurate, but for a real reason).
      a8ee9544
    • Tim Peters's avatar
      Collector #1397: testTimeStamp fails on FreeBSD · 449e60be
      Tim Peters authored
      Forward-porting from Zope 2.7.
      
      The checkFullTimeStamp() test was sensitive to unique mktime() behavior
      on FreeBSD.  See:
      
      http://lists.freebsd.org/pipermail/freebsd-standards/2003-November/000268.html 
      
      The purpose of this test is to exercise ZODB's TimeStamp object, so got
      rid of dependence on platform mktime() and time.timezone quirks --
      TimeStamp works in GMT, so how mktime() treats tm_isdst should be
      irrelevant in all TimeStamp tests.
      
      Also added a comment about the highly non-obvious numeric characteristics
      of TimeStamp's treatment of seconds (round-tripping is surprisingly
      inaccurate, but for a real reason).
      449e60be
  7. 29 Jun, 2004 4 commits
  8. 28 Jun, 2004 1 commit
    • Tim Peters's avatar
      Mostly clarifications of the complicated state transactions · 7f06ee4e
      Tim Peters authored
      are in now (partly ZODB 3, partly ZODB 4, partly transitional).
      More is needed.
      Added new collaborations.txt, which spells out some dynamics
      of the system in a compact way.  This is in a format Jim used
      for Zope 3, essentially a flat-text and less-formal representation
      of UML sequence diagrams.
      7f06ee4e
  9. 25 Jun, 2004 1 commit
  10. 22 Jun, 2004 5 commits
  11. 21 Jun, 2004 4 commits
  12. 18 Jun, 2004 2 commits
  13. 17 Jun, 2004 2 commits
  14. 15 Jun, 2004 3 commits