Class MerkleTreeConfig

java.lang.Object
com.hazelcast.config.MerkleTreeConfig
All Implemented Interfaces:
DataSerializable, IdentifiedDataSerializable, com.hazelcast.nio.serialization.impl.Versioned

public class MerkleTreeConfig extends Object implements IdentifiedDataSerializable, com.hazelcast.nio.serialization.impl.Versioned
Configuration for a merkle tree. The merkle tree is a data structure used for efficient comparison of the difference in the contents of large data structures. The precision of such a comparison mechanism is defined by the depth of the merkle tree.

A larger depth means that a data synchronization mechanism will be able to pinpoint a smaller subset of the data structure contents in which a change occurred. This causes the synchronization mechanism to be more efficient. On the other hand, a larger tree depth means the merkle tree will consume more memory.

A smaller depth means the data synchronization mechanism will have to transfer larger chunks of the data structure in which a possible change happened. On the other hand, a shallower tree consumes less memory. The depth must be between 2 and 27 (exclusive). The default depth is 10.

As the comparison mechanism is iterative, a larger depth will also prolong the duration of the comparison mechanism. Care must be taken to not have large tree depths if the latency of the comparison operation is high. The default depth is 10.

See https://en.wikipedia.org/wiki/Merkle_tree.

Since:
3.11
  • Constructor Details

  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getDepth

      public int getDepth()
      Returns the depth of the merkle tree. The default depth is 10.
    • setDepth

      public MerkleTreeConfig setDepth(int depth)
      Sets the depth of the merkle tree. The depth must be between 27 and 2 (exclusive).
      Parameters:
      depth - the depth of the merkle tree
      Returns:
      the updated config
      Throws:
      InvalidConfigurationException - if the depth is greater than 27 or less than 2
    • isEnabled

      @Deprecated public boolean isEnabled()
      Deprecated.
      use getEnabled() instead.
      Returns if the merkle tree is enabled.
      Returns:
      true if the merkle tree is enabled, false otherwise
    • getEnabled

      public Boolean getEnabled()
      Returns if the merkle tree is enabled.
      Returns:
      TRUE if the merkle tree is enabled, FALSE if disabled or null if user did not explicitly configure Merkle trees, so it may or may not be enabled by Hazelcast.
    • isEnabledSet

      @PrivateApi public boolean isEnabledSet()
      Method introduced for client protocol compatibility.
      Returns:
      whether enabled field is set or not.
    • setEnabled

      public MerkleTreeConfig setEnabled(boolean enabled)
      Enables or disables the merkle tree.
      Parameters:
      enabled - true if enabled, false otherwise.
      Returns:
      the updated config
    • getFactoryId

      public int getFactoryId()
      Description copied from interface: IdentifiedDataSerializable
      Returns DataSerializableFactory factory ID for this class.
      Specified by:
      getFactoryId in interface IdentifiedDataSerializable
      Returns:
      factory ID
    • getClassId

      public int getClassId()
      Description copied from interface: IdentifiedDataSerializable
      Returns type identifier for this class. It should be unique per DataSerializableFactory.
      Specified by:
      getClassId in interface IdentifiedDataSerializable
      Returns:
      type ID
    • writeData

      public void writeData(ObjectDataOutput out) throws IOException
      Description copied from interface: DataSerializable
      Writes object fields to output stream
      Specified by:
      writeData in interface DataSerializable
      Parameters:
      out - output
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed.
    • readData

      public void readData(ObjectDataInput in) throws IOException
      Description copied from interface: DataSerializable
      Reads fields from the input stream
      Specified by:
      readData in interface DataSerializable
      Parameters:
      in - input
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException may be thrown if the input stream has been closed.
    • equals

      public final boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object