This is an automated email from the ASF dual-hosted git repository.
jshao pushed a commit to branch branch-0.9
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-0.9 by this push:
new 0c53d4657d [#4707] fix (client): Fix the Gravitino client-side version
verification to ignore patch version numbers (#8394)
0c53d4657d is described below
commit 0c53d4657dacd3be185e1d0dc23d41295591294a
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Sep 2 18:56:45 2025 +0800
[#4707] fix (client): Fix the Gravitino client-side version verification to
ignore patch version numbers (#8394)
### What changes were proposed in this pull request?
Fix the Gravitino client-side version verification to ignore patch
version numbers
### Why are the changes needed?
Fix: https://github.com/apache/gravitino/issues/4707
### Does this PR introduce _any_ user-facing change?
NO
### How was this patch tested?
UTs
Co-authored-by: Yuhui <[email protected]>
---
.../java/org/apache/gravitino/client/GravitinoClientBase.java | 2 +-
.../java/org/apache/gravitino/client/GravitinoVersion.java | 5 ++---
.../java/org/apache/gravitino/client/TestGravitinoVersion.java | 10 +++++++---
.../client-python/gravitino/client/gravitino_client_base.py | 2 +-
clients/client-python/gravitino/client/gravitino_version.py | 2 +-
.../client-python/tests/unittests/test_gravitino_version.py | 10 +++++++++-
6 files changed, 21 insertions(+), 10 deletions(-)
diff --git
a/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoClientBase.java
b/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoClientBase.java
index 02027235cd..096e08364b 100644
---
a/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoClientBase.java
+++
b/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoClientBase.java
@@ -100,7 +100,7 @@ public abstract class GravitinoClientBase implements
Closeable {
GravitinoVersion clientVersion = clientVersion();
if (!clientVersion.compatibleWithServerVersion(serverVersion)) {
throw new GravitinoRuntimeException(
- "Gravitino does not support the case that the client-side major
version is higher than the server-side version."
+ "Gravitino does not support the case that the client-side version is
higher than the server version."
+ "The client version is %s, and the server version %s",
clientVersion.version(), serverVersion.version());
}
diff --git
a/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoVersion.java
b/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoVersion.java
index 08d3f8408d..83e09b3429 100644
---
a/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoVersion.java
+++
b/clients/client-java/src/main/java/org/apache/gravitino/client/GravitinoVersion.java
@@ -57,12 +57,11 @@ public class GravitinoVersion extends VersionDTO {
* Check if the current version is compatible with the server version.
*
* @param serverVersion the server version to check compatibility with
- * @return true if the client current major version is less than or equal to
the server's major
- * version
+ * @return true if the client current major version is less than or equal to
the server's version
*/
public boolean compatibleWithServerVersion(GravitinoVersion serverVersion) {
int[] left = getVersionNumber();
int[] right = serverVersion.getVersionNumber();
- return left[0] <= right[0];
+ return left[0] < right[0] || (left[0] == right[0] && left[1] <= right[1]);
}
}
diff --git
a/clients/client-java/src/test/java/org/apache/gravitino/client/TestGravitinoVersion.java
b/clients/client-java/src/test/java/org/apache/gravitino/client/TestGravitinoVersion.java
index a94a16a96b..041bb30544 100644
---
a/clients/client-java/src/test/java/org/apache/gravitino/client/TestGravitinoVersion.java
+++
b/clients/client-java/src/test/java/org/apache/gravitino/client/TestGravitinoVersion.java
@@ -135,8 +135,8 @@ public class TestGravitinoVersion {
@Test
void testVersionCompatibility() {
- GravitinoVersion version1 = new GravitinoVersion("2.5.3", "2023-01-01",
"1234567");
- GravitinoVersion version2 = new GravitinoVersion("2.5.4", "2023-01-01",
"1234567");
+ GravitinoVersion version1 = new GravitinoVersion("2.6.3", "2023-01-01",
"1234567");
+ GravitinoVersion version2 = new GravitinoVersion("2.6.4", "2023-01-01",
"1234567");
assertTrue(version1.compatibleWithServerVersion(version2));
version1 = new GravitinoVersion("2.6.3", "2023-01-01", "1234567");
@@ -144,13 +144,17 @@ public class TestGravitinoVersion {
assertTrue(version1.compatibleWithServerVersion(version2));
version1 = new GravitinoVersion("2.6.3", "2023-01-01", "1234567");
- version2 = new GravitinoVersion("2.5.4", "2023-01-01", "1234567");
+ version2 = new GravitinoVersion("2.6.2", "2023-01-01", "1234567");
assertTrue(version1.compatibleWithServerVersion(version2));
version1 = new GravitinoVersion("2.6.3", "2023-01-01", "1234567");
version2 = new GravitinoVersion("3.5.4", "2023-01-01", "1234567");
assertTrue(version1.compatibleWithServerVersion(version2));
+ version1 = new GravitinoVersion("2.6.3", "2023-01-01", "1234567");
+ version2 = new GravitinoVersion("2.5.3", "2023-01-01", "1234567");
+ assertFalse(version1.compatibleWithServerVersion(version2));
+
version1 = new GravitinoVersion("3.6.3", "2023-01-01", "1234567");
version2 = new GravitinoVersion("2.5.4", "2023-01-01", "1234567");
assertFalse(version1.compatibleWithServerVersion(version2));
diff --git a/clients/client-python/gravitino/client/gravitino_client_base.py
b/clients/client-python/gravitino/client/gravitino_client_base.py
index cf4c801c85..7706800345 100644
--- a/clients/client-python/gravitino/client/gravitino_client_base.py
+++ b/clients/client-python/gravitino/client/gravitino_client_base.py
@@ -101,7 +101,7 @@ class GravitinoClientBase:
if not client_version.compatible_with_server_version(server_version):
raise GravitinoRuntimeException(
"Gravitino does not support the case that "
- "the client-side major version is higher than the server-side
version."
+ "the client-side version is higher than the server-side
version."
f"The client version is {client_version.version()}, and the
server version {server_version.version()}"
)
diff --git a/clients/client-python/gravitino/client/gravitino_version.py
b/clients/client-python/gravitino/client/gravitino_version.py
index ac445b6408..792365b9aa 100644
--- a/clients/client-python/gravitino/client/gravitino_version.py
+++ b/clients/client-python/gravitino/client/gravitino_version.py
@@ -84,4 +84,4 @@ class GravitinoVersion(VersionDTO):
Compatibility is defined such that the client major version is less
than or equal
to the server major version.
"""
- return self.major <= server_version.major
+ return (self.major, self.minor) <= (server_version.major,
server_version.minor)
diff --git a/clients/client-python/tests/unittests/test_gravitino_version.py
b/clients/client-python/tests/unittests/test_gravitino_version.py
index 9f7446c7e2..46a1834544 100644
--- a/clients/client-python/tests/unittests/test_gravitino_version.py
+++ b/clients/client-python/tests/unittests/test_gravitino_version.py
@@ -197,13 +197,21 @@ class TestGravitinoVersion(unittest.TestCase):
version2 = GravitinoVersion(VersionDTO("1.6.0", "2023-01-01",
"1234567"))
self.assertTrue(version1.compatible_with_server_version(version2))
+ version1 = GravitinoVersion(VersionDTO("1.6.1", "2023-01-01",
"1234567"))
+ version2 = GravitinoVersion(VersionDTO("1.6.2", "2023-01-01",
"1234567"))
+ self.assertTrue(version1.compatible_with_server_version(version2))
+
+ version1 = GravitinoVersion(VersionDTO("1.6.2", "2023-01-01",
"1234567"))
+ version2 = GravitinoVersion(VersionDTO("1.6.1", "2023-01-01",
"1234567"))
+ self.assertTrue(version1.compatible_with_server_version(version2))
+
version1 = GravitinoVersion(VersionDTO("1.6.0", "2023-01-01",
"1234567"))
version2 = GravitinoVersion(VersionDTO("2.6.1", "2023-01-01",
"1234567"))
self.assertTrue(version1.compatible_with_server_version(version2))
version1 = GravitinoVersion(VersionDTO("1.6.0", "2023-01-01",
"1234567"))
version2 = GravitinoVersion(VersionDTO("1.4.0", "2023-01-01",
"1234567"))
- self.assertTrue(version1.compatible_with_server_version(version2))
+ self.assertFalse(version1.compatible_with_server_version(version2))
version1 = GravitinoVersion(VersionDTO("1.6.0", "2023-01-01",
"1234567"))
version2 = GravitinoVersion(VersionDTO("0.6.0", "2023-01-01",
"1234567"))