GEODE-8851: FunctionRemoteContext should support version ordinals GEODE_1_12_1 and GEODE_1_13_1 (#5928)
- Also adds KnownVersion.isNewerThanOrEqualTo as synonym to
KnownVersion.isNotOlderThan.
diff --git a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
index 50ce9e4..075b99d 100644
--- a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
+++ b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
@@ -1297,8 +1297,8 @@
toData,19
org/apache/geode/internal/cache/execute/FunctionRemoteContext,2
-fromData,145
-toData,123
+fromData,187
+toData,165
org/apache/geode/internal/cache/ha/HARegionQueue$DispatchedAndCurrentEvents,2
fromData,37
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionRemoteContext.java b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionRemoteContext.java
index 32d69d6..52afddd 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionRemoteContext.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionRemoteContext.java
@@ -86,7 +86,12 @@
}
this.isReExecute = DataSerializer.readBoolean(in);
- if (StaticSerialization.getVersionForDataStream(in).isNotOlderThan(KnownVersion.GEODE_1_14_0)) {
+ KnownVersion dataStreamVersion = StaticSerialization.getVersionForDataStream(in);
+ if (dataStreamVersion.isNewerThanOrEqualTo(KnownVersion.GEODE_1_14_0)
+ || (dataStreamVersion.isNewerThanOrEqualTo(KnownVersion.GEODE_1_12_1)
+ && dataStreamVersion.isOlderThan(KnownVersion.GEODE_1_13_0))
+ || (dataStreamVersion.isNewerThanOrEqualTo(KnownVersion.GEODE_1_13_1)
+ && dataStreamVersion.isOlderThan(KnownVersion.GEODE_1_14_0))) {
this.principal = DataSerializer.readObject(in);
}
}
@@ -109,8 +114,12 @@
}
DataSerializer.writeBoolean(this.isReExecute, out);
- if (StaticSerialization.getVersionForDataStream(out)
- .isNotOlderThan(KnownVersion.GEODE_1_14_0)) {
+ KnownVersion dataStreamVersion = StaticSerialization.getVersionForDataStream(out);
+ if (dataStreamVersion.isNewerThanOrEqualTo(KnownVersion.GEODE_1_14_0)
+ || (dataStreamVersion.isNewerThanOrEqualTo(KnownVersion.GEODE_1_12_1)
+ && dataStreamVersion.isOlderThan(KnownVersion.GEODE_1_13_0))
+ || (dataStreamVersion.isNewerThanOrEqualTo(KnownVersion.GEODE_1_13_1)
+ && dataStreamVersion.isOlderThan(KnownVersion.GEODE_1_14_0))) {
DataSerializer.writeObject(this.principal, out);
}
}
diff --git a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/Version.java b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/Version.java
index cb7d8d1..ea47514 100644
--- a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/Version.java
+++ b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/Version.java
@@ -65,6 +65,17 @@
boolean isNotOlderThan(Version version);
/**
+ * Test if this version is newer than or equal to the given version. Synonym for
+ * {@link #isNotOlderThan(Version)}.
+ *
+ * @param version to compare to this version
+ * @return true if this is the same version or newer, otherwise false.
+ */
+ default boolean isNewerThanOrEqualTo(Version version) {
+ return isNotOlderThan(version);
+ }
+
+ /**
* Test if this version is newer than given version.
*
* @param version to compare to this version