Skip to content

maximum recursion depth exceeded issue. #7

@wynemo

Description

@wynemo
  method = getattr(client, method, None)
      if method is not None:
          d = method(*args, **kwargs)    

if method us @defer.inlineCallbacks, then we might have a maximum recursion depth exceeded issue. when self._commands is greater than zero, then we would chain a very long list of callbacks.

 if len(self._commands) > 0:
        d, method, args, kwargs = self._commands.pop(0)
        _ign_d = self.performRequest(method, *args, **kwargs)
        _ign_d.chainDeferred(d)

I suggest do it in a reactor.callLater when self._commands > 0.

the stack information is quite large, and I only paste a part.

File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 202, in _freeClientAfterRequest
     C:    self.clientFree(client)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 292, in clientFree
     C:    _ign_d = self.performRequest(method, *args, **kwargs)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 236, in performRequest
     C:    client, method, *args, **kwargs)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 213, in _performRequestOnClient
     C:    d.addCallback(_freeClientAfterRequest)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 317, in addCallback
     C:    callbackKeywords=kw)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 306, in addCallbacks
     C:    self._runCallbacks()
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 588, in _runCallbacks
     C:    current.result = callback(current.result, *args, **kw)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 202, in _freeClientAfterRequest
     C:    self.clientFree(client)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 292, in clientFree
     C:    _ign_d = self.performRequest(method, *args, **kwargs)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 236, in performRequest
     C:    client, method, *args, **kwargs)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 213, in _performRequestOnClient
     C:    d.addCallback(_freeClientAfterRequest)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 317, in addCallback
     C:    callbackKeywords=kw)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 306, in addCallbacks
     C:    self._runCallbacks()
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 588, in _runCallbacks
     C:    current.result = callback(current.result, *args, **kw)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 202, in _freeClientAfterRequest
     C:    self.clientFree(client)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 292, in clientFree
     C:    _ign_d = self.performRequest(method, *args, **kwargs)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 236, in performRequest
     C:    client, method, *args, **kwargs)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 213, in _performRequestOnClient
     C:    d.addCallback(_freeClientAfterRequest)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 317, in addCallback
     C:    callbackKeywords=kw)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 306, in addCallbacks
     C:    self._runCallbacks()
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/twisted/internet/defer.py", line 588, in _runCallbacks
     C:    current.result = callback(current.result, *args, **kw)
     C:  File "/usr/local/apps/Opus/server/xxd/env/lib/python2.7/site-packages/txconnpool/pool.py", line 202, in _freeClientAfterRequest
     C:    self.clientFree(client)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions