Skip to content

maximum recursion depth exceeded issue. #7

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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