You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Zhu Zhu (Jira)" <ji...@apache.org> on 2022/10/20 07:37:00 UTC
[jira] [Commented] (FLINK-29647) report stackoverflow when using kryo
[ https://issues.apache.org/jira/browse/FLINK-29647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17620854#comment-17620854 ]
Zhu Zhu commented on FLINK-29647:
---------------------------------
[~jackin853] I think you are right that is is a known issue of kryo 2.24.0.
However, it's not easy to upgrade kryo, see https://lists.apache.org/thread/vyov944och394lql76zb3myf2g140fdw.
Therefore, I would suggest to implement serializers for your classes to not let its serializations fallback to kryo to avoid such issues.
> report stackoverflow when using kryo
> ------------------------------------
>
> Key: FLINK-29647
> URL: https://issues.apache.org/jira/browse/FLINK-29647
> Project: Flink
> Issue Type: Bug
> Components: API / Type Serialization System
> Affects Versions: 1.13.2
> Environment: flink 1.13.2 version (kryo 2.24 version)
> Reporter: Gao Fei
> Priority: Major
> Labels: KryoSerializer
>
> When using kryo to report stackoverflow, the error is as follows:
> {code:java}
> java.lang.StackOverflowError at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:43) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44) at
> com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:44)
> {code}
> I am using two-phase commit to write data to mysql, the following is part of the mysql sink code:
> {code:java}
> public class MySqlTwoPhaseCommitSink extends TwoPhaseCommitSinkFunction<Tuple2<String,Integer>, Connection,Void> {
> private static final Logger log = LoggerFactory.getLogger(MySqlTwoPhaseCommitSink.class);
> public MySqlTwoPhaseCommitSink(){
> super(new KryoSerializer<>(Connection.class,new ExecutionConfig()), VoidSerializer.INSTANCE);
> }
> @Override
> public void invoke(Connection connection, Tuple2<String,Integer> tp, Context context) throws Exception {
> log.info("start invoke...");
> //TODO
> //omit here
> }
> @Override
> public Connection beginTransaction() throws Exception {
> log.info("start beginTransaction.......");
> String url = "jdbc:mysql://localhost:3306/bigdata?useUnicode=true&characterEncoding=UTF-8";
> Connection connection = DBConnectUtil.getConnection(url, "root", "123456");
> return connection;
> }
> @Override
> public void preCommit(Connection connection) throws Exception {
> log.info("start preCommit...");
> }
> @Override
> public void commit(Connection connection) {
> log.info("start commit...");
> DBConnectUtil.commit(connection);
> }
> @Override
> public void abort(Connection connection) {
> log.info("start abort rollback...");
> DBConnectUtil.rollback(connection);
> }
> }{code}
> I also found similar problem reports: https://github.com/EsotericSoftware/kryo/issues/341
--
This message was sent by Atlassian Jira
(v8.20.10#820010)