[Checkins] [zopefoundation/ZODB] 6b7075: patch time.time in historical_connections to avoid...

GitHub noreply at github.com
Mon Apr 4 17:42:05 CEST 2016


  Branch: refs/heads/master
  Home:   https://github.com/zopefoundation/ZODB
  Commit: 6b707535efbd33da6b758bed57e15c844f0e9b53
      https://github.com/zopefoundation/ZODB/commit/6b707535efbd33da6b758bed57e15c844f0e9b53
  Author: Jason Madden <jason+github at nextthought.com>
  Date:   2016-04-04 (Mon, 04 Apr 2016)

  Changed paths:
    M src/ZODB/DB.py
    M src/ZODB/historical_connections.txt

  Log Message:
  -----------
  patch time.time in historical_connections to avoid windows failures; fix race condition in pool.availableGC

* patch time.time in historical_connections to avoid windows failures.

* Also use a mock version of datetime.datetime.utcnow.

We can't patch the method in-place because it's an extension type.

* synchronize sleep with time

* increment by less than the pool timeout to avoid a race condition.

* Avoid mutating the dict as we iter over it.

Seen in Python 3.4 tests:

File "/home/travis/build/zopefoundation/ZODB/src/ZODB/historical_connections.txt", line 263, in historical_connections.txt
Failed example:
    conn = db.open()
Exception raised:
    Traceback (most recent call last):
      File "/opt/python/3.4.2/lib/python3.4/doctest.py", line 1324, in __run
  compileflags, 1), test.globs)
      File "<doctest historical_connections.txt[0]>", line 1, in <module>
  conn = db.open()
      File "/home/travis/build/zopefoundation/ZODB/src/ZODB/DB.py", line 761, in open
  self.historical_pool.availableGC()
      File "/home/travis/build/zopefoundation/ZODB/src/ZODB/DB.py", line 277, in availableGC
  for key, pool in self.pools.items():
    RuntimeError: dictionary changed size during iteration




More information about the checkins mailing list