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)

Reply via email to