From: Victor Pickard Date: Mon, 18 Sep 2017 20:03:33 +0000 (-0400) Subject: BUG 9166 - Fix Netvirt L2GW Illegal state exception X-Git-Tag: release/oxygen~29 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=2eea33c2efaa563d8f113784ebf378fecc02c6bd;p=ovsdb.git BUG 9166 - Fix Netvirt L2GW Illegal state exception Fix exception and modify logic for comparing OVSDB Hardware_vtep database version retrived from device to min version specified. Change-Id: I0b882b4a4883af80a3ea01224781e781eaefac1a Signed-off-by: Victor Pickard --- diff --git a/utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java b/utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java index c93a2df62..77bacdc2b 100644 --- a/utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java +++ b/utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java @@ -1228,14 +1228,41 @@ public class SouthboundUtils { public static boolean compareDbVersionToMinVersion(final String dbVersion, final String minVersion) { final Matcher dbVersionMatcher = PATTERN.matcher(dbVersion); final Matcher minVersionMatcher = PATTERN.matcher(minVersion); + LOG.debug("dbVersion {}, minVersion {}", dbVersion, minVersion); + if (!dbVersionMatcher.find()){ + LOG.error("Invalid DB version format {}", dbVersion); + return false; + } + if (!minVersionMatcher.find()){ + LOG.error("Invalid Min DB version format {}", minVersion); + return false; + } + if (dbVersion != null && !dbVersion.isEmpty() && minVersion != null && !minVersion.isEmpty()) { - if ((Integer.valueOf(dbVersionMatcher.group(1)).equals(Integer.valueOf(minVersionMatcher.group(1))) && - Integer.valueOf(dbVersionMatcher.group(2)).equals(Integer.valueOf(minVersionMatcher.group(2))) && - Integer.valueOf(dbVersionMatcher.group(3)).equals(Integer.valueOf(minVersionMatcher.group(3)))) || - Integer.valueOf(dbVersionMatcher.group(1)).intValue() > Integer.valueOf(minVersionMatcher.group(1)).intValue() || - Integer.valueOf(dbVersionMatcher.group(2)).intValue() >= Integer.valueOf(minVersionMatcher.group(2)).intValue() || - Integer.valueOf(dbVersionMatcher.group(3)).intValue() >= Integer.valueOf(minVersionMatcher.group(3)).intValue()) { + if (Integer.valueOf(dbVersionMatcher.group(1)).equals(Integer.valueOf(minVersionMatcher.group(1))) && + Integer.valueOf(dbVersionMatcher.group(2)).equals(Integer.valueOf(minVersionMatcher.group(2))) && + Integer.valueOf(dbVersionMatcher.group(3)).equals(Integer.valueOf(minVersionMatcher.group(3)))) { + return true; + } + + if (Integer.valueOf(dbVersionMatcher.group(1)).intValue() > Integer.valueOf(minVersionMatcher.group(1)).intValue()) { + return true; + } + + if (Integer.valueOf(dbVersionMatcher.group(1)).intValue() < Integer.valueOf(minVersionMatcher.group(1)).intValue()) { + return false; + } + + // major version is equal + if (Integer.valueOf(dbVersionMatcher.group(2)).intValue() > Integer.valueOf(minVersionMatcher.group(2)).intValue()) { + return true; + } + if (Integer.valueOf(dbVersionMatcher.group(2)).intValue() < Integer.valueOf(minVersionMatcher.group(2)).intValue()) { + return false; + } + + if (Integer.valueOf(dbVersionMatcher.group(3)).intValue() > Integer.valueOf(minVersionMatcher.group(3)).intValue()) { return true; } }