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)