[ 
https://issues.apache.org/jira/browse/BEAM-4036?focusedWorklogId=89193&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-89193
 ]

ASF GitHub Bot logged work on BEAM-4036:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 09/Apr/18 23:42
            Start Date: 09/Apr/18 23:42
    Worklog Time Spent: 10m 
      Work Description: chuanyu opened a new pull request #5072: [BEAM-4036] 
Fix pickling for "recursive" classes.
URL: https://github.com/apache/beam/pull/5072
 
 
   Fix pickling for recursive classes by maintaining a dict of already seen 
classes and not revisiting classes that have already been seen.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

            Worklog Id:     (was: 89193)
            Time Spent: 10m
    Remaining Estimate: 0h

> 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
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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