Enum Class PayloadVersion

java.lang.Object
java.lang.Enum<PayloadVersion>
org.opendaylight.controller.cluster.datastore.persisted.PayloadVersion
All Implemented Interfaces:
Serializable, Comparable<PayloadVersion>, Constable, WritableObject

@Beta public enum PayloadVersion extends Enum<PayloadVersion> implements WritableObject
Enumeration of all ABI versions supported by this implementation of persistence. An ABI version has to be bumped whenever:
  • a new event is defined
  • serialization format is changed

This version effectively defines the protocol version between actors participating on a particular shard. A shard participant instance should oppose RAFT candidates which produce persistence of an unsupported version. If a follower encounters an unsupported version it must not become fully-operational, as it does not have an accurate view of shard state.

  • Enum Constant Details

    • TEST_PAST_VERSION

      public static final PayloadVersion TEST_PAST_VERSION
      Version which is older than any other version. This version exists purely for testing purposes.
    • CHLORINE_SR2

      @Deprecated(since="8.0.0", forRemoval=true) public static final PayloadVersion CHLORINE_SR2
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use POTASSIUM instead.
      ABI version shipped enabled 2022.09 Chlorine SR2. This version revises the serialization format of payloads proxies to reduce their size. Otherwise this format is equivalent to #MAGNESIUM.
    • POTASSIUM

      public static final PayloadVersion POTASSIUM
      ABI version shipped enabled 2023.09 Potassium. This version removes Augmentation identifier and nodes. Otherwise this format is equivalent to CHLORINE_SR2.
    • TEST_FUTURE_VERSION

      public static final PayloadVersion TEST_FUTURE_VERSION
      Version which is newer than any other version. This version exists purely for testing purposes.
  • Method Details

    • values

      public static PayloadVersion[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static PayloadVersion valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • shortValue

      public short shortValue()
      Return the unsigned short integer identifying this version.
      Returns:
      Unsigned short integer identifying this version
    • getStreamVersion

      public abstract @NonNull NormalizedNodeStreamVersion getStreamVersion()
      Return the NormalizedNode stream version corresponding to this particular ABI.
      Returns:
      Stream Version to use for this ABI version
    • current

      public static @NonNull PayloadVersion current()
      Return the codebase-native persistence version. This version is the default version allocated to messages at runtime. Conversion to previous versions may incur additional overhead (such as object allocation).
      Returns:
      Current PayloadVersion
    • valueOf

      public static @NonNull PayloadVersion valueOf(short version) throws FutureVersionException, PastVersionException
      Return the PayloadVersion corresponding to an unsigned short integer. This method is provided for callers which provide their own recovery strategy in case of version incompatibility.
      Parameters:
      version - Short integer as returned from shortValue()
      Returns:
      PayloadVersion
      Throws:
      FutureVersionException - if the specified integer identifies a future version
      PastVersionException - if the specified integer identifies a past version which is no longer supported
    • writeTo

      public void writeTo(DataOutput out) throws IOException
      Specified by:
      writeTo in interface WritableObject
      Throws:
      IOException
    • readFrom

      public static @NonNull PayloadVersion readFrom(@NonNull DataInput in) throws IOException
      Read an PayloadVersion from a DataInput. This method is provided for callers which do not have a recovery strategy for dealing with unsupported versions.
      Parameters:
      in - Input from which to read
      Returns:
      An PayloadVersion
      Throws:
      IOException - If read fails or an unsupported version is encountered