GitHub user davebshow opened a pull request:
https://github.com/apache/tinkerpop/pull/854
TINKERPOP-1933 gremlin-python maximum recursion depth exceeded on large
responses
https://issues.apache.org/jira/browse/TINKERPOP-1933
Recursive calls to the `data_received` were causing max recursion depth
error with large streaming responses. This PR remove the recursion in favor of
a simple loop. I didn't add any new tests. Locally, I tested like this:
```python
from gremlin_python.driver import client
groovy = """
def num_nodes = 1..100000
for (n in num_nodes) {
g.addV().next()
}
"""
c = client.Client('ws://localhost:8182/gremlin', 'g')
results = c.submit(groovy)
results.all().result()
results = c.submit("g.V().count()")
print("Added %d nodes to graph" % results.all().result()[0])
# This was always ok
print("Ok up to len: %d" %
len(c.submit("g.V().limit(61888)").all().result()))
try:
# This used to throw error
print("Retrieved %d nodes, no more recursion issue" %
len(c.submit("g.V().limit(100000)").all().result()))
except:
pass
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/apache/tinkerpop TINKERPOP-1933
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tinkerpop/pull/854.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #854
----
commit 4c8717dd4e94ec248a959911d8c11f3b45b2d7b3
Author: davebshow <davebshow@...>
Date: 2018-04-23T23:21:48Z
Don't use recursive calls for streaming response
----
---