[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Weijie Guo updated FLINK-13910: --- Fix Version/s: 2.0.0 (was: 1.20.0) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 2.0.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] lincoln lee updated FLINK-13910: Fix Version/s: 1.20.0 (was: 1.19.0) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.20.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jing Ge updated FLINK-13910: Fix Version/s: 1.19.0 (was: 1.18.0) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.19.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Xintong Song updated FLINK-13910: - Fix Version/s: 1.18.0 (was: 1.17.0) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.18.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Xingbo Huang updated FLINK-13910: - Fix Version/s: 1.17.0 (was: 1.16.0) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.17.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yun Gao updated FLINK-13910: Fix Version/s: 1.16.0 (was: 1.15.0) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.16.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.1#820001)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Thomas Weise updated FLINK-13910: - Fix Version/s: (was: 1.14.3) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.15.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.20.1#820001)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Xintong Song updated FLINK-13910: - Fix Version/s: (was: 1.14.0) 1.14.1 1.15.0 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.15.0, 1.14.1 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Flink Jira Bot updated FLINK-13910: --- Labels: auto-deprioritized-major auto-unassigned pull-request-available (was: auto-unassigned pull-request-available stale-major) Priority: Minor (was: Major) This issue was labeled "stale-major" 7 ago and has not received any updates so it is being deprioritized. If this ticket is actually Major, please raise the priority and ask a committer to assign you the issue or revive the public discussion. > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Minor > Labels: auto-deprioritized-major, auto-unassigned, > pull-request-available > Fix For: 1.14.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Flink Jira Bot updated FLINK-13910: --- Labels: auto-unassigned pull-request-available stale-major (was: auto-unassigned pull-request-available) I am the [Flink Jira Bot|https://github.com/apache/flink-jira-bot/] and I help the community manage its development. I see this issues has been marked as Major but is unassigned and neither itself nor its Sub-Tasks have been updated for 30 days. I have gone ahead and added a "stale-major" to the issue". If this ticket is a Major, please either assign yourself or give an update. Afterwards, please remove the label or in 7 days the issue will be deprioritized. > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Major > Labels: auto-unassigned, pull-request-available, stale-major > Fix For: 1.14.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to >
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Dawid Wysakowicz updated FLINK-13910: - Fix Version/s: (was: 1.13.0) 1.14.0 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Major > Labels: auto-unassigned, pull-request-available > Fix For: 1.14.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Flink Jira Bot updated FLINK-13910: --- Labels: auto-unassigned pull-request-available (was: pull-request-available stale-assigned) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Major > Labels: auto-unassigned, pull-request-available > Fix For: 1.13.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Flink Jira Bot updated FLINK-13910: --- Labels: pull-request-available stale-assigned (was: pull-request-available) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Major > Labels: pull-request-available, stale-assigned > Fix For: 1.13.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Robert Metzger updated FLINK-13910: --- Fix Version/s: (was: 1.12.0) 1.13.0 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Major > Labels: pull-request-available > Fix For: 1.13.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Aljoscha Krettek updated FLINK-13910: - Priority: Major (was: Critical) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Major > Labels: pull-request-available > Fix For: 1.11.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yun Tang updated FLINK-13910: - Attachment: classes-without-uid-per-module > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Critical > Labels: pull-request-available > Fix For: 1.11.0 > > Attachments: SerializableNoSerialVersionUIDField, > classes-without-uid-per-module, serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yun Tang updated FLINK-13910: - Fix Version/s: (was: 1.9.2) (was: 1.10.0) 1.11.0 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Critical > Labels: pull-request-available > Fix For: 1.11.0 > > Attachments: SerializableNoSerialVersionUIDField, > serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yun Tang updated FLINK-13910: - Attachment: serializable-classes-without-uid-5249249 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Critical > Labels: pull-request-available > Fix For: 1.9.2, 1.10.0 > > Attachments: SerializableNoSerialVersionUIDField, > serializable-classes-without-uid-5249249 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] ASF GitHub Bot updated FLINK-13910: --- Labels: pull-request-available (was: ) > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Assignee: Yun Tang >Priority: Critical > Labels: pull-request-available > Fix For: 1.9.2, 1.10.0 > > Attachments: SerializableNoSerialVersionUIDField > > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jark Wu updated FLINK-13910: Fix Version/s: (was: 1.9.1) 1.9.2 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Critical > Fix For: 1.10.0, 1.9.2 > > Attachments: SerializableNoSerialVersionUIDField > > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yun Tang updated FLINK-13910: - Component/s: API / Type Serialization System > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug > Components: API / Type Serialization System >Reporter: Yun Tang >Priority: Critical > Fix For: 1.10.0, 1.9.1 > > Attachments: SerializableNoSerialVersionUIDField > > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (FLINK-13910) Many serializable classes have no explicit 'serialVersionUID'
[ https://issues.apache.org/jira/browse/FLINK-13910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yun Tang updated FLINK-13910: - Fix Version/s: 1.9.1 1.10.0 > Many serializable classes have no explicit 'serialVersionUID' > - > > Key: FLINK-13910 > URL: https://issues.apache.org/jira/browse/FLINK-13910 > Project: Flink > Issue Type: Bug >Reporter: Yun Tang >Priority: Critical > Fix For: 1.10.0, 1.9.1 > > Attachments: SerializableNoSerialVersionUIDField > > > Currently, many serializable classes in Flink have no explicit > 'serialVersionUID'. As [official > doc|https://flink.apache.org/contributing/code-style-and-quality-java.html#java-serialization] > said, {{Serializable classes must define a Serial Version UID}}. > No 'serialVersionUID' would cause compatibility problem. Take > {{TwoPhaseCommitSinkFunction}} for example, since no explicit > 'serialVersionUID' defined, after > [FLINK-10455|https://github.com/apache/flink/commit/489be82a6d93057ed4a3f9bf38ef50d01d11d96b] > introduced, its default 'serialVersionUID' has changed from > "4584405056408828651" to "4064406918549730832". In other words, if we submit > a job from Flink-1.6.3 local home to remote Flink-1.6.2 cluster with the > usage of {{TwoPhaseCommitSinkFunction}}, we would get exception like: > {code:java} > org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot > instantiate user function. > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:239) > at > org.apache.flink.streaming.runtime.tasks.OperatorChain.(OperatorChain.java:104) > at > org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) > at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711) > at java.lang.Thread.run(Thread.java:748) > Caused by: java.io.InvalidClassException: > org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction; > local class incompatible: stream classdesc serialVersionUID = > 4584405056408828651, local class serialVersionUID = 4064406918549730832 > at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1885) > at > java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287) > at > java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:537) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) > at > org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:512) > at > org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:473) > at > org.apache.flink.streaming.api.graph.StreamConfig.getStreamOperator(StreamConfig.java:224) > ... 4 more > {code} > Similar problems existed in > {{org.apache.flink.streaming.api.operators.SimpleOperatorFactory}} which has > different 'serialVersionUID' from release-1.9 and current master branch. > IMO, we might have two options to fix this bug: > # Add explicit serialVersionUID for those classes which is identical to > latest Flink-1.9.0 release code. > # Use similar mechanism like {{FailureTolerantObjectInputStream}} in > {{InstantiationUtil}} to ignore serialVersionUID mismatch. > I have collected all production classes without serialVersionUID from latest > master branch in the attachment, which counts to 639 classes. -- This message was sent by Atlassian Jira (v8.3.2#803003)