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

----


---

Reply via email to