Chuan Yu Foo created BEAM-4036:
----------------------------------
Summary: Pickler enters infinite recursion with self-referential
classes
Key: BEAM-4036
URL: https://issues.apache.org/jira/browse/BEAM-4036
Project: Beam
Issue Type: Bug
Components: sdk-py-core
Reporter: Chuan Yu Foo
Assignee: Ahmet Altay
The pickler recurses infinitely and dies with maximum recursion limit exceeded
when a module contains a self-referential class (or any class which is part of
a cycle).
Here's a minimal example:
{code}
class RecursiveClass(object):
SELF_TYPE = None
def __init__(self, datum)
self.datum = 'RecursiveClass:%s' % datum
RecursiveClass.SELF_TYPE = RecursiveClass
{code}
If this is in a module, then the pickler will enter the infinite recursion when
trying to pickle any nested class in that module.
An actual example is with typing.Type, which is part of a cycle typing.Type ->
type -> object -> typing.Type. If a module contains an attribute that refers to
typing.Type, such as a type alias, it will trigger this bug.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)