Robert P. Thille created THRIFT-2883:
----------------------------------------

             Summary: TTwisted.py, during ConnectionLost processing: 
exceptions.RuntimeError: dictionary changed size during iteration
                 Key: THRIFT-2883
                 URL: https://issues.apache.org/jira/browse/THRIFT-2883
             Project: Thrift
          Issue Type: Bug
    Affects Versions: 0.9.2
            Reporter: Robert P. Thille


If any of the errbacks called by the connectionLost routine attempt to make new 
requests over thrift (retries), the requests dictionary will change size and 
Python with throw the RuntimeError exception and the clients will not be 
properly notified of the connectionLost state change.
2014-12-06 02:22:16,808 ERROR    twisted      Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/companyutils/service/__init__.py", line 
292, in main
    self.reactor.run()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1169, 
in run
    self.mainLoop()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line 1181, 
in mainLoop
    self.doIteration(t)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/epollreactor.py", 
line 379, in doPoll
    log.callWithLogger(selectable, _drdw, selectable, fd, event)
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in 
callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in 
callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, 
in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, 
in callWithContext
    return func(*args,**kw)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 
627, in _doReadOrWrite
    self._disconnectSelectable(selectable, why, inRead)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 
258, in _disconnectSelectable
    selectable.readConnectionLost(f)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 267, in 
readConnectionLost
    self.connectionLost(reason)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 473, in 
connectionLost
    self._commonConnection.connectionLost(self, reason)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 287, in 
connectionLost
    protocol.connectionLost(reason)
  File "/usr/lib/pymodules/python2.7/telephus/protocol.py", line 63, in 
connectionLost
    self._parent_protocol.connectionLost(self, reason)
  File "/usr/lib/pymodules/python2.7/thrift/transport/TTwisted.py", line 84, in 
connectionLost
    for k, v in self.client._reqs.iteritems():
exceptions.RuntimeError: dictionary changed size during iteration




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to