alibaba / jstorm

Enterprise Stream Process Engine
http://jstorm.io
Apache License 2.0
3.92k stars 1.8k forks source link

storm-trident-stream重构为jstorm时,运行topology报错。在storm上能正常运行 #647

Open jiangsy01 opened 5 years ago

jiangsy01 commented 5 years ago

[ERROR 2018-11-05 15:22:13 c.a.j.c.AsyncLoopRunnable:116 b-11-aggregate-stat-calc-aggregate-stat-all-agg-stat-ana-round-machine-agg-stat-ana-round-test-agg-stat-ana-round:33-TransferRunnable-0] Async loop died!!!null java.lang.StackOverflowError: null at com.alibaba.jstorm.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:590) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:87) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:518) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:552) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:518) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:552) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:518) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:552) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:518) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:552) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[jstorm-core-2.2.1.jar:na] at com.alibaba.jstorm.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:518) ~[jstorm-core-2.2.1.jar:na]

jiangsy01 commented 5 years ago

com.alibaba.jstorm.transactional.BatchGroupIdSerializer.write() 这个方法会导致com.esotericsoftware.kryo.serializers.ObjectField.write(Output output, Object object)和com.esotericsoftware.kryo.serializers.FieldSerializer.write(Kryo kryo, Output output, T object)的互相循环调用,最终StackOverflowError

jiangsy01 commented 5 years ago

com.alibaba.jstorm.task.TaskTransfer.serialize(KryoTupleSerializer serializer, Object event) 方法的320行是bug,导致stackOverFlow