Same issued happened to us, can't run any of our topologies since they all use TransactionalTridentKafkaSpout... Huge regression.
It looks like this is due to: org.apache.storm.kafka.trident.Coordinator implements IPartitionedTridentSpout.Coordinator<List<GlobalPartitionInformation>> ... while org.apache.storm.trident.spout.PartitionedTridentSpoutExecutor.Coordinator implements ITridentSpout.BatchCoordinator<Integer> with private IPartitionedTridentSpout.Coordinator<Integer> _coordinator; and of course Integer != List<GlobalPartitionInformation> ... 2016-05-06 0:32 GMT+09:00 Morrigan Jones <[email protected]>: > I'm in the process of upgrading our Storm code from 0.10.0 to 1.0.0 and > I've run into an issue with TransactionalTridentKafkaSpout. When running > one of our topologies I'm getting the following exception: > > Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be > cast to java.lang.Integer > at > org.apache.storm.trident.spout.PartitionedTridentSpoutExecutor$Coordinator.initializeTransaction(PartitionedTridentSpoutExecutor.java:55) > ~[storm-core-1.0.0.jar:1.0.0] > at > org.apache.storm.trident.spout.PartitionedTridentSpoutExecutor$Coordinator.initializeTransaction(PartitionedTridentSpoutExecutor.java:43) > ~[storm-core-1.0.0.jar:1.0.0] > at > org.apache.storm.trident.spout.TridentSpoutCoordinator.execute(TridentSpoutCoordinator.java:70) > ~[storm-core-1.0.0.jar:1.0.0] > at > org.apache.storm.topology.BasicBoltExecutor.execute(BasicBoltExecutor.java:50) > ~[storm-core-1.0.0.jar:1.0.0] > > The issue appears to be caused by a change in > PartitionedTridentSpoutExecutor between the two versions, specifically this > method: > > 1.0.0 - > https://github.com/apache/storm/blob/v1.0.0/storm-core/src/jvm/org/apache/storm/trident/spout/PartitionedTridentSpoutExecutor.java#L51 > > public Integer initializeTransaction(long txid, Integer prevMetadata, > Integer currMetadata) { > if(currMetadata!=null) { > return currMetadata; > } else { > return _coordinator.getPartitionsForBatch(); > } > } > > 0.10.0 - > https://github.com/apache/storm/blob/v0.10.0/storm-core/src/jvm/storm/trident/spout/PartitionedTridentSpoutExecutor.java#L51 > > public Object initializeTransaction(long txid, Object prevMetadata, Object > currMetadata) { > if(currMetadata!=null) { > return currMetadata; > } else { > return _coordinator.getPartitionsForBatch(); > } > } > > The OpaquePartitionedTridentSpoutExecutor still uses Object for the > metadata. Is this a bug in PartitionedTridentSpoutExecutor that is breaking > transactional spouts? Any help will be appreciated. > > Thanks! >
