You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Antoine Pitrou (Jira)" <ji...@apache.org> on 2021/02/17 16:02:01 UTC

[jira] [Closed] (ARROW-11371) [Python] Serializing deeply nested structures raises recursion error

     [ https://issues.apache.org/jira/browse/ARROW-11371?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antoine Pitrou closed ARROW-11371.
----------------------------------
    Resolution: Won't Fix

PyArrow serialization is deprecated, closing as won't fix.

> [Python] Serializing deeply nested structures raises recursion error
> --------------------------------------------------------------------
>
>                 Key: ARROW-11371
>                 URL: https://issues.apache.org/jira/browse/ARROW-11371
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Python
>    Affects Versions: 1.0.1
>         Environment: $ python --version
> Python 3.6.12
> $ pip list | grep pyarrow
> pyarrow                 1.0.1
>            Reporter: Alexander Dmitriev
>            Priority: Minor
>              Labels: pyarrow-serialization
>         Attachments: pyarrow_recursion.py
>
>
> When serializing deeply nested python structures such as:
> {code:java}
> data = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[None]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]{code}
> orĀ 
> {code:java}
> data = OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', OrderedDict([('a', None)]))]))]))]))]))]))]))]))]){code}
> pyarrow raises the following exception:
> {code:java}
> >>> buffer = pyarrow.serialize(data).to_buffer()
> Traceback (most recent call last):
>   File "pyarrow_recursion.py", line 11, in try_recursion
>     buffer = pyarrow.serialize(data).to_buffer()
>   File "pyarrow/serialization.pxi", line 285, in pyarrow.lib.SerializedPyObject.to_buffer
>   File "pyarrow/serialization.pxi", line 248, in pyarrow.lib.SerializedPyObject.total_bytes.__get__
>   File "pyarrow/error.pxi", line 84, in pyarrow.lib.check_status
> pyarrow.lib.ArrowInvalid: Max recursion depth reached
> {code}
> While this not the prime use case of pyarrow.serialize, it would be nice to have a much larger recursion limit here, to not run into this issue with auto-generated structures quite so often.
> An example script for reproducing the error can be found in the attachments.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)