[ 
https://issues.apache.org/jira/browse/FLINK-12113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16824898#comment-16824898
 ] 

aitozi commented on FLINK-12113:
--------------------------------

Can we enable the recursive clean in ClosureCleaner#clean by check the class 
fields recursively. In this way we don't have to take care of all the wrapper 
functions, we just have to clean up to all userfunction register entrance.

> User code passing to fromCollection(Iterator, Class) not cleaned
> ----------------------------------------------------------------
>
>                 Key: FLINK-12113
>                 URL: https://issues.apache.org/jira/browse/FLINK-12113
>             Project: Flink
>          Issue Type: Bug
>          Components: API / DataStream
>    Affects Versions: 1.7.2
>            Reporter: yankai zhang
>            Assignee: Guowei Ma
>            Priority: Major
>         Attachments: image-2019-04-07-21-52-37-264.png, 
> image-2019-04-08-23-19-27-359.png
>
>
>  
> {code:java}
> interface IS<E> extends Iterator<E>, Serializable { }
> StreamExecutionEnvironment env = 
> StreamExecutionEnvironment.getExecutionEnvironment();
> env.fromCollection(new IS<Object>() {
>     @Override
>     public boolean hasNext() {
>         return false;
>     }
>     @Override
>     public Object next() {
>         return null;
>     }
> }, Object.class);
> {code}
> Code piece above throws exception:
> {code:java}
> org.apache.flink.api.common.InvalidProgramException: The implementation of 
> the SourceFunction is not serializable. The object probably contains or 
> references non serializable fields.
>   at org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:99)
> ....{code}
> And my workaround is wrapping clean around iterator instance, like this:
>  
> {code:java}
> StreamExecutionEnvironment env = 
> StreamExecutionEnvironment.getExecutionEnvironment();
> env.fromCollection(env.clean(new IS<Object>() {
>     @Override
>     public boolean hasNext() {
>         return false;
>     }
>     @Override
>     public Object next() {
>         return null;
>     }
> }), Object.class);
> {code}
>  
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to