This is an automated email from the ASF dual-hosted git repository. huxing pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push: new 363cd0c Make code strong, version check compatibility. Fix https://github.com/apache/dubbo/pull/4488 (#4490) 363cd0c is described below commit 363cd0c36bac074db1e2a00c368b57e5d2f22891 Author: ken.lj <ken.lj...@gmail.com> AuthorDate: Tue Jul 16 16:57:03 2019 +0800 Make code strong, version check compatibility. Fix https://github.com/apache/dubbo/pull/4488 (#4490) --- .../src/main/java/org/apache/dubbo/common/Version.java | 17 +++++++++++++---- .../org/apache/dubbo/common/version/VersionTest.java | 6 ++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java index b67d32c..8494fed 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java @@ -42,6 +42,8 @@ public final class Version { // Dubbo RPC protocol version, for compatibility, it must not be between 2.0.10 ~ 2.6.2 public static final String DEFAULT_DUBBO_PROTOCOL_VERSION = "2.0.2"; + // version 1.0.0 represents Dubbo rpc protocol before v2.6.2 + public static final int LEGACY_DUBBO_PROTOCOL_VERSION = 10000; // 1.0.0 // Dubbo implementation version, usually is jar version. private static final String VERSION = getVersion(Version.class, ""); @@ -115,10 +117,17 @@ public final class Version { public static int getIntVersion(String version) { Integer v = VERSION2INT.get(version); if (v == null) { - v = parseInt(version); - // e.g., version number 2.6.3 will convert to 2060300 - if (version.split("\\.").length == 3) { - v = v * 100; + try { + v = parseInt(version); + // e.g., version number 2.6.3 will convert to 2060300 + if (version.split("\\.").length == 3) { + v = v * 100; + } + } catch (Exception e) { + logger.warn("Please make sure your version value has the right format: " + + "\n 1. only contains digital number: 2.0.0; \n 2. with string suffix: 2.6.7-stable. " + + "\nIf you are using Dubbo before v2.6.2, the version value is the same with the jar version."); + v = LEGACY_DUBBO_PROTOCOL_VERSION; } VERSION2INT.put(version, v); } diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java index 419e5d8..19eea4d 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java @@ -34,6 +34,12 @@ public class VersionTest { Assertions.assertTrue(Version.isSupportResponseAttachment("2.0.2")); Assertions.assertTrue(Version.isSupportResponseAttachment("2.0.3")); Assertions.assertFalse(Version.isSupportResponseAttachment("2.0.0")); + Assertions.assertFalse(Version.isSupportResponseAttachment("1.0.0")); + Assertions.assertTrue(Version.isSupportResponseAttachment("2.6.6-stable")); + + Assertions.assertFalse(Version.isSupportResponseAttachment("2.0.contains")); + Assertions.assertFalse(Version.isSupportResponseAttachment("version.string")); + Assertions.assertFalse(Version.isSupportResponseAttachment("prefix2.0")); } @Test