Details
-
Bug
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
2.0.0, 1.1.2, 1.2.1
-
None
Description
Shinhyung Yang wrote on the mailing list:
I have been running the Yahoo streaming benchmarks on Storm 0.9.7 [...] With the introduction of Storm 1.2.0, I decided to upgrade from 0.9.7 to 1.2.0. Currently I'm testing Yahoo streaming benchmark's topology on the new setup and I end up getting the following exceptions:
[...]
Caused by: org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /ad-events/7183b5b2-4971-41a1-b86d-0788f646bc64/partition_0
[...]
When fixing STORM-2706, I used the Storm parent's DependencyManagement section to force Zookeeper to version 3.4.6 everywhere in Storm. Sadly it turns out that this mechanism doesn't extend to external projects that depend on Storm components. While e.g. storm-kafka will use Zookeeper 3.4.6 when built as part of Storm, it will have a transitive dependency on Zookeeper 3.5.3-beta when an external project declares a dependency on storm-kafka.
A quick google indicates that the "proper" way to export the transitive dependency versions to downstream projects would be with a BOM pom, i.e. we'd create a separate BOM project for Storm that exports our DependencyManagement, and users would then import the BOM. I'm not sure if we want to do that on master, but since it is a breaking change I don't think we should do this on 1.x.
For 1.x (and maybe master?), we'll have to make sure that Curator dependencies always exclude Zookeeper, and all projects depending on Curator will have to explicitly declare the right Zookeeper dependency version.