/** * @return the {@code ClusterVersion} with the given major and minor */ public static Version of(int major, int minor) { if (major == UNKNOWN_VERSION && minor == UNKNOWN_VERSION) { return UNKNOWN; } else { return new Version(major, minor); } }
private void validateClusterVersionChange(Version newClusterVersion) { if (!clusterVersion.isUnknown() && clusterVersion.getMajor() != newClusterVersion.getMajor()) { throw new IllegalArgumentException("Transition to requested version " + newClusterVersion + " not allowed for current cluster version " + clusterVersion); } }
private void checkConfigVersion(IdentifiedDataSerializable config) { Class<? extends IdentifiedDataSerializable> configClass = config.getClass(); Version currentClusterVersion = version; Version introducedIn = CONFIG_TO_VERSION.get(configClass); if (currentClusterVersion.isLessThan(introducedIn)) { throw new UnsupportedOperationException(format("Config '%s' is available since version '%s'. " + "Current cluster version '%s' does not allow dynamically adding '%1$s'.", configClass.getSimpleName(), introducedIn.toString(), currentClusterVersion.toString() )); } }
private void checkMemberListVersion(int memberListVersion) { // RU_COMPAT_V3_10 if (clusterVersion.isGreaterOrEqual(Versions.V3_11)) { int thisMemberListVersion = node.getClusterService().getMemberListVersion(); if (memberListVersion != thisMemberListVersion) { throw new IllegalStateException( "Can not lock cluster state! Member list versions are not matching!" + " Expected version: " + memberListVersion + ", Current version: " + thisMemberListVersion); } } }
void checkCompatibility() { if (nodeEngine.getClusterService().getClusterVersion().isLessThan(Versions.V3_11)) { throw new UnsupportedOperationException("Setting MaxIdle is available when cluster version is 3.11 or higher"); } } }
@Override public void validateJoinRequest(JoinMessage joinMessage) { // check joining member's major.minor version is same as current cluster version's major.minor numbers MemberVersion memberVersion = joinMessage.getMemberVersion(); Version clusterVersion = node.getClusterService().getClusterVersion(); if (!memberVersion.asVersion().equals(clusterVersion)) { String msg = "Joining node's version " + memberVersion + " is not compatible with cluster version " + clusterVersion; if (clusterVersion.getMajor() != memberVersion.getMajor()) { msg += " (Rolling Member Upgrades are only supported for the same major version)"; } if (clusterVersion.getMinor() > memberVersion.getMinor()) { msg += " (Rolling Member Upgrades are only supported for the next minor version)"; } if (!BuildInfoProvider.getBuildInfo().isEnterprise()) { msg += " (Rolling Member Upgrades are only supported in Hazelcast Enterprise)"; } throw new VersionMismatchException(msg); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Version that = (Version) o; return isEqualTo(that); }
private boolean mustWriteIndexInfos(Version clusterVersion) { // 3.10 OS always writes mapIndexInfos // 3.10 EE on cluster version 3.10 must write index info if (!getBuildInfo().isEnterprise() || clusterVersion.isGreaterOrEqual(V3_10)) { return true; } ClusterService clusterService = operation.getNodeEngine().getClusterService(); Member targetMember = clusterService.getMember(target); // When cluster version is 3.9, only write mapIndexInfo if target member is 3.9 EE. Reasoning: // 3.9 EE expects to read mapIndexInfos when object data input comes with 3.9+ version. This is // the case when the object stream originates from a versioned 3.10 member. return targetMember.getVersion().asVersion().isEqualTo(V3_9) && clusterVersion.isEqualTo(V3_9); }
protected boolean isClusterVersionLessOrEqual(Version version) { Version clusterVersion = getNodeEngine().getClusterService().getClusterVersion(); return clusterVersion.isLessOrEqual(version); }
protected boolean isClusterVersionGreaterThan(Version version) { Version clusterVersion = getNodeEngine().getClusterService().getClusterVersion(); return clusterVersion.isGreaterThan(version); }
private boolean mustReadMapIndexInfos(Version version) { // 3.10 OS always reads mapIndexInfos // 3.10 EE always read mapIndexInfos when cluster version >= 3.10 // When cluster version is 3.9: // - an object input from 3.9 EE does not contain mapIndexInfo and arrives with UNKNOWN version // - an object input from 3.10 EE comes with version 3.9 and contains mapIndexInfo return !getBuildInfo().isEnterprise() || version.isGreaterOrEqual(V3_10); }
void checkCompatibility() { if (nodeEngine.getClusterService().getClusterVersion().isLessThan(Versions.V3_11)) { throw new UnsupportedOperationException("Setting MaxIdle is available when cluster version is 3.11 or higher"); } } }
@Override public void validateJoinRequest(JoinMessage joinMessage) { // check joining member's major.minor version is same as current cluster version's major.minor numbers MemberVersion memberVersion = joinMessage.getMemberVersion(); Version clusterVersion = node.getClusterService().getClusterVersion(); if (!memberVersion.asVersion().equals(clusterVersion)) { String msg = "Joining node's version " + memberVersion + " is not compatible with cluster version " + clusterVersion; if (clusterVersion.getMajor() != memberVersion.getMajor()) { msg += " (Rolling Member Upgrades are only supported for the same major version)"; } if (clusterVersion.getMinor() > memberVersion.getMinor()) { msg += " (Rolling Member Upgrades are only supported for the next minor version)"; } if (!BuildInfoProvider.getBuildInfo().isEnterprise()) { msg += " (Rolling Member Upgrades are only supported in Hazelcast Enterprise)"; } throw new VersionMismatchException(msg); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Version that = (Version) o; return isEqualTo(that); }
private void validateClusterVersionChange(Version newClusterVersion) { if (!clusterVersion.isUnknown() && clusterVersion.getMajor() != newClusterVersion.getMajor()) { throw new IllegalArgumentException("Transition to requested version " + newClusterVersion + " not allowed for current cluster version " + clusterVersion); } }
private boolean mustWriteIndexInfos(Version clusterVersion) { // Do not write index info when OS or cluster version is 3.10+ if (!getBuildInfo().isEnterprise() || clusterVersion.isGreaterOrEqual(V3_10)) { return false; } // 3.9 EE reads index definitions when object input version is UNKNOWN or <= 3.8 // --> it expects to read map index definitions from other 3.9 members but not from // an input coming from 3.10 EE (as it will have version 3.9) --> do not send when target member is 3.9 // --> when target member is 3.10, do send index info so it behaves like 3.9-only cluster ClusterService clusterService = getNodeEngine().getClusterService(); Member targetMember = clusterService.getMember(target); return targetMember.getVersion().asVersion().isEqualTo(V3_10) && clusterVersion.isEqualTo(V3_9); } }
protected boolean isClusterVersionLessOrEqual(Version version) { Version clusterVersion = getNodeEngine().getClusterService().getClusterVersion(); return clusterVersion.isLessOrEqual(version); }
protected boolean isClusterVersionGreaterThan(Version version) { Version clusterVersion = getNodeEngine().getClusterService().getClusterVersion(); return clusterVersion.isGreaterThan(version); }