Commit c4c9cd8b authored by Jim Fulton's avatar Jim Fulton

Fixed a serious bug that could cause client I/O to stop

(hang). This was accomonied by a critical log message along the
lines of: "RuntimeError: dictionary changed size during iteration".
parent 7449c3ea
What's new on ZODB 3.7.0c1?
===========================
What's new on ZODB 3.7.1?
=========================
Packaging
---------
......@@ -19,6 +19,10 @@ Packaging
ClientStorage
-------------
- (3.7.1) Fixed a serious bug that could cause client I/O to stop
(hang). This was accomonied by a critical log message along the
lines of: "RuntimeError: dictionary changed size during iteration".
- (3.7b4) Added logic to avoid spurious errors from the logging system
on exit.
......
......@@ -52,8 +52,12 @@ def client_loop():
while map:
try:
r = e = list(client_map)
w = [fd for (fd, obj) in map.iteritems() if obj.writable()]
# The next two lines intentionally don't use
# iterators. Other threads can close dispatchers, causeing
# the socket map to shrink.
r = e = client_map.keys()
w = [fd for (fd, obj) in map.items() if obj.writable()]
try:
r, w, e = select.select(r, w, e, client_timeout)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment