[
https://issues.apache.org/jira/browse/STORM-2448?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Joseph Evans resolved STORM-2448.
----------------------------------------
Resolution: Fixed
Fix Version/s: 1.1.1
0.10.3
1.0.3
2.0.0
> Support running workers using older JVMs/storm versions
> -------------------------------------------------------
>
> Key: STORM-2448
> URL: https://issues.apache.org/jira/browse/STORM-2448
> Project: Apache Storm
> Issue Type: Improvement
> Components: storm-core
> Affects Versions: 2.0.0
> Reporter: Robert Joseph Evans
> Assignee: Robert Joseph Evans
> Fix For: 2.0.0, 1.0.3, 0.10.3, 1.1.1
>
> Time Spent: 3h
> Remaining Estimate: 0h
>
> As a part of STORM-2441 we are separating out the classpaths for the
> client+worker process from everything else in storm. This is great but it
> really will make some of our users upset, because it is not a rolling
> upgrade, and because they will need to recompile their topologies (again).
> We have done a really good job in maintaining compatibility with older
> versions of storm because we use thrift for all communication and state
> storage. This means that a new supervisor and or nimbus should be able to
> talk to just about any existing client/worker out there. So we should
> explicitly support this.
> We should add in config options to supervisors.
> {{storm.supported.jvms}} which is a map of the version of the JVM to the
> JAVA_HOME path for it.
> and
> {{storm.legacy.worker.classpath}} which is a map of the version of storm to a
> CLASSPATH that can be used to launch a legacy worker process.
> They should be set for all supervisors and nimbus.
> Then we also add in some metadata that the client submits to nimbus along
> with a topology. Namely the version of the storm client they are running on
> and the version of the JVM they are running on.
> Nimbus can then decide (possibly through another config, but probably just
> through convention with some config overrides) if the version of the client +
> JVM is compatible with the version of storm + JVM currently on the cluster.
> If so it should just let it through. If not it should pick a version of the
> JVM + storm that is compatible. If there are none available it will reject
> the request. We should also allow end users to set these configs.
> For this to work well we need some good version matching/sorting code that is
> lenient, even during rolling upgrades.
> For example if a user submits a topology with a 1.0.3 client to a 2.0.0
> cluster. Nimbus sees that it has 1.0.3 installed great it will start running
> with that, but then we do a rolling upgrade of the cluster and upgrade move
> to 1.0.4. The supervisors should be able to launch the workers for that
> topology with a 1.0.4 classpath.
> As such part of the worker heartbeat should also include the version of storm
> + JVM that the worker is running with.
> We should display that on the UI and display the version it was submitted
> with on the UI too.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)