Class LoomVersion

java.lang.Object
com.loomcache.common.protocol.LoomVersion
All Implemented Interfaces:
Serializable, Comparable<LoomVersion>

public final class LoomVersion extends Object implements Comparable<LoomVersion>, Serializable
Version information for LoomCache nodes.

Supports semantic versioning (major.minor.patch) plus protocol version negotiation. Used during peer handshake to determine compatibility and select protocol version for serialization/deserialization of messages and WAL entries.

Backward compatibility: - CURRENT_VERSION represents the version of this build - MIN_COMPATIBLE_VERSION is the minimum version this build can talk to - Rolling upgrades are supported when versions differ but MIN_COMPATIBLE_VERSION constraints are met

See Also:
  • Field Details

  • Constructor Details

    • LoomVersion

      public LoomVersion(String version)
    • LoomVersion

      public LoomVersion(String version, int protocolVersion)
    • LoomVersion

      public LoomVersion(String version, int protocolVersion, String minimumCompatibleVersion)
  • Method Details

    • current

      public static LoomVersion current()
      Create a LoomVersion from the current build version.
    • minCompatible

      public static LoomVersion minCompatible()
      Create a LoomVersion from minimum compatible version.
    • major

      public int major()
    • minor

      public int minor()
    • patch

      public int patch()
    • protocolVersion

      public int protocolVersion()
    • isCompatibleWith

      public boolean isCompatibleWith(LoomVersion other)
      Check if this version is compatible with another version.

      This check is directional. The other version must satisfy this version's advertised minimum compatible version. A full bidirectional compatibility check requires both a.isCompatibleWith(b) and b.isCompatibleWith(a).

      Two versions are compatible if: 1. Both major versions are equal (major version is breaking change) 2. The other version is >= this version's advertised minimum compatible version

      Parameters:
      other - The other version to check compatibility with
      Returns:
      true if versions are compatible, false otherwise
    • compareTo

      public int compareTo(LoomVersion other)
      Comparator based on semantic versioning: major, then minor, then patch. For example: 1.0.0 invalid input: '<' 1.0.1 invalid input: '<' 1.1.0 invalid input: '<' 2.0.0
      Specified by:
      compareTo in interface Comparable<LoomVersion>