public static <T> T getCompatibleVersion(NavigableMap<SimpleVersion, T> versionedMap, SimpleVersion desiredVersion, String what, T defaultValue) { Entry<SimpleVersion, T> ret = versionedMap.ceilingEntry(desiredVersion); if (ret == null || ret.getKey().getMajor() != desiredVersion.getMajor()) { //Could not find a "fully" compatible version. Look to see if there is a possibly compatible version right below it ret = versionedMap.floorEntry(desiredVersion); if (ret == null || ret.getKey().getMajor() != desiredVersion.getMajor()) { if (defaultValue != null) { LOG.warn("Could not find any compatible {} falling back to using {}", what, defaultValue); } return defaultValue; } LOG.warn("Could not find a higer compatible version for {} {}, using {} instead", what, desiredVersion, ret.getKey()); } return ret.getValue(); }
protected String getWorkerMain(SimpleVersion topoVersion) { String defaultWorkerGuess = "org.apache.storm.daemon.worker.Worker"; if (topoVersion.getMajor() == 0) { //Prior to the org.apache change defaultWorkerGuess = "backtype.storm.daemon.worker"; } else if (topoVersion.getMajor() == 1) { //Have not moved to a java worker yet defaultWorkerGuess = "org.apache.storm.daemon.worker"; } NavigableMap<SimpleVersion, String> mains = Utils.getConfiguredWorkerMainVersions(_conf); return Utils.getCompatibleVersion(mains, topoVersion, "worker main class", defaultWorkerGuess); }
protected String getWorkerLogWriter(SimpleVersion topoVersion) { String defaultGuess = "org.apache.storm.LogWriter"; if (topoVersion.getMajor() == 0) { //Prior to the org.apache change defaultGuess = "backtype.storm.LogWriter"; } NavigableMap<SimpleVersion, String> mains = Utils.getConfiguredWorkerLogWriterVersions(_conf); return Utils.getCompatibleVersion(mains, topoVersion, "worker log writer class", defaultGuess); }
if ((topoVersion.getMajor() == -1 && topoVersion.getMinor() == -1) || topoVersion.compareTo(MIN_VERSION_SUPPORT_RPC_HEARTBEAT) >= 0) { commandList.add(String.valueOf(_supervisorPort));
@Test public void testParseStorm0xSnapshot() { SimpleVersion version = new SimpleVersion("0.10.3-SNAPSHOT"); Assert.assertEquals(0, version.getMajor()); Assert.assertEquals(10, version.getMinor()); }
@Test public void testParseStorm2x() { SimpleVersion version = new SimpleVersion("2.1.2"); Assert.assertEquals(2, version.getMajor()); Assert.assertEquals(1, version.getMinor()); }
@Test public void testParseStorm0x() { SimpleVersion version = new SimpleVersion("0.10.3"); Assert.assertEquals(0, version.getMajor()); Assert.assertEquals(10, version.getMinor()); }
@Test public void testParseStorm1x() { SimpleVersion version = new SimpleVersion("1.0.4"); Assert.assertEquals(1, version.getMajor()); Assert.assertEquals(0, version.getMinor()); }
@Test public void testParseStorm1xSnapshot() { SimpleVersion version = new SimpleVersion("1.0.4-SNAPSHOT"); Assert.assertEquals(1, version.getMajor()); Assert.assertEquals(0, version.getMinor()); }
@Test public void testParseStorm2xSnapshot() { SimpleVersion version = new SimpleVersion("2.1.2-SNAPSHOT"); Assert.assertEquals(2, version.getMajor()); Assert.assertEquals(1, version.getMinor()); }