1. 07 Sep, 2001 5 commits
    • Jeremy Hylton's avatar
      Merge in zeo-1_0-branch · 04e2ef59
      Jeremy Hylton authored
      Shorten two long lines, one by wrapping, another by removing an
      unnecessary tuple unpacking.
      04e2ef59
    • Jeremy Hylton's avatar
      Merge in zeo-1_0-branch · ef2ab695
      Jeremy Hylton authored
      Wrap send() and recv() calls in try/except
      
      The try/except catches errors like EAGAIN that indicate transient
      failures.  In those cases, treat as send() and recv() of no data and
      return from method gracefully.
      ef2ab695
    • Jeremy Hylton's avatar
      Merge in zeo-1_0-branch · 52b8c629
      Jeremy Hylton authored
      Fixed a bug in building undo invalidation info that caused client
      storages to raise an exception that caused connections to be reset
      and that, for some of reason, caused undo's to not propigate to
      the clients.
      
      Avoid long delays at the end of a pack.
      
          When a client calls pack, a separate thread is started to call the
          pack call on the storage.  When the thread finishes, it calls
          message_output() to send a response to the client.  If asyncore is
          currently in a poll call when this happens, the output won't be
          detected until the next poll call.  If there is little I/O on the
          connection, this won't happen until the select call times out
          after 30 seconds.
      
          The trigger is the standard gimmick for one thread to notify a
          mainloop in another thread that the first thread has some I/O to
          do.  It exits the current select.  The next poll call detects that
          the triggering thread is ready to do I/O and handles it.
      
      Use asyncwrap to call asyncore.loop() and asyncore.poll()
      52b8c629
    • Jeremy Hylton's avatar
      Merge in zeo-1_0-branch · 67e905c9
      Jeremy Hylton authored
      Don't release the commit lock unless there is a transaction in
      progress.  This appears to cause the "release unlocked lock" error to
      be replaced with a socket.error: "bad file descriptor".  That's
      progress?
      67e905c9
    • Jeremy Hylton's avatar
      New file from zeo-1_0-branch. · 4545308c
      Jeremy Hylton authored
      Wrap asyncore calls and be careful about exceptions.
      4545308c
  2. 06 Sep, 2001 1 commit
  3. 04 Sep, 2001 2 commits
  4. 01 Sep, 2001 1 commit
  5. 27 Aug, 2001 1 commit
  6. 24 Aug, 2001 1 commit
  7. 23 Aug, 2001 2 commits
  8. 17 Aug, 2001 1 commit
    • Jeremy Hylton's avatar
      Update ZEO connection tests to run on Windows · c67fd0f1
      Jeremy Hylton authored
      forker.py:
          Extend start_zeo_server() on Windows with arg that specifies port,
          which is used to restart the server on the same port.
      
          Remove unnecessary imports.
      
          Set PYTHONPATH for the spawned script.
      
      testZEO.py:
          Refactor ConnectionTests into abstract base class with two platform-
          specific subclasses.
      
          Add goofy test_suite() function, which is goofy because I can't figure
          out how to use unittest any other way.
      
      winserver.py:
          Keep track of storage in ZEOTestServer so that its close() method can be
          called when the server exits.
      c67fd0f1
  9. 16 Aug, 2001 3 commits
    • Jeremy Hylton's avatar
      Add rudiments of a ZEO test framework for Windows · 0be6d6ea
      Jeremy Hylton authored
      winserver.py: A small script that runs a ZEO StorageServer and a ZEOTestServer.
          The ZEOTestServer is used to kill the StorageServer during a unit test's
          teardown phases.  As soon as a client connects to that server, it exits
          the process.
      
      forker.py: Now forks and spawns, depending on os.
          XXX This needs to be cleaned up a lot, since the interfaces on Windows and
          Unix are nothing alike.
      
      testZEO.py:  Add WindowsGenericTests and WindowsZEOFileStorageTests.
          These test cases use the Windows-specific forker interface.  They also
          use getStorageInfo() to describe the storage, rather than getStorage()
          to create the storage.  This is necessary because the storage instance
          is created in a separate process.
      0be6d6ea
    • Jeremy Hylton's avatar
      7ebc2f00
    • Jim Fulton's avatar
      Added __cmp__ from Greg Ward. · 65da8605
      Jim Fulton authored
      65da8605
  10. 14 Aug, 2001 1 commit
  11. 13 Aug, 2001 1 commit
  12. 07 Aug, 2001 3 commits
  13. 06 Aug, 2001 3 commits
  14. 03 Aug, 2001 1 commit
  15. 30 Jul, 2001 2 commits
  16. 19 Jul, 2001 1 commit
  17. 17 Jul, 2001 1 commit
  18. 13 Jul, 2001 1 commit
  19. 09 Jul, 2001 1 commit
  20. 20 Jun, 2001 3 commits
  21. 15 Jun, 2001 1 commit
    • Barry Warsaw's avatar
      checkHistoryAfterVersionCommit(), checkHistoryAfterVersionAbort(): · 904f8975
      Barry Warsaw authored
      After consultation with Jim, we agreed that Full's behavior vis object
      serial numbers after a version commit/abort are correct.  The new
      revision should get the serial number of the transaction that did the
      commit/abort.
      
      FileStorage is actually broken here; the new revision gets the same
      serial number as the last in-version revision.  However, the way the
      tests are written, it works for either storage, so I'm just updating
      some comments to explain the situation.
      
      Note: Jim also explained that history()'s "version" argument should be
      ignored.  Doesn't make much difference to these tests though.
      904f8975
  22. 14 Jun, 2001 4 commits