Class ClusterMapConfig


  • public class ClusterMapConfig
    extends java.lang.Object
    The configs for resource state.
    • Field Detail

      • CLUSTERMAP_CLUSTER_NAME

        public static final java.lang.String CLUSTERMAP_CLUSTER_NAME
        See Also:
        Constant Field Values
      • CLUSTERMAP_DATACENTER_NAME

        public static final java.lang.String CLUSTERMAP_DATACENTER_NAME
        See Also:
        Constant Field Values
      • CLUSTERMAP_HOST_NAME

        public static final java.lang.String CLUSTERMAP_HOST_NAME
        See Also:
        Constant Field Values
      • CLUSTERMAP_MAX_DISK_CAPACITY_IN_BYTES

        public static final java.lang.String CLUSTERMAP_MAX_DISK_CAPACITY_IN_BYTES
        See Also:
        Constant Field Values
      • CLUSTERMAP_DATA_NODE_CONFIG_SOURCE_TYPE

        public static final java.lang.String CLUSTERMAP_DATA_NODE_CONFIG_SOURCE_TYPE
        See Also:
        Constant Field Values
      • AMBRY_STATE_MODEL_DEF

        public static final java.lang.String AMBRY_STATE_MODEL_DEF
        See Also:
        Constant Field Values
      • OLD_STATE_MODEL_DEF

        public static final java.lang.String OLD_STATE_MODEL_DEF
        See Also:
        Constant Field Values
      • DEFAULT_STATE_MODEL_DEF

        public static final java.lang.String DEFAULT_STATE_MODEL_DEF
        See Also:
        Constant Field Values
      • ENABLE_AGGREGATED_MONTHLY_ACCOUNT_REPORT

        public static final java.lang.String ENABLE_AGGREGATED_MONTHLY_ACCOUNT_REPORT
        See Also:
        Constant Field Values
      • clusterMapResourceStatePolicyFactory

        @Config("clustermap.resourcestatepolicy.factory")
        @Default("com.github.ambry.clustermap.FixedBackoffResourceStatePolicyFactory")
        public final java.lang.String clusterMapResourceStatePolicyFactory
        The factory class used to get the resource state policies.
      • clusterMapFixedTimeoutDatanodeErrorThreshold

        @Config("clustermap.fixedtimeout.datanode.error.threshold")
        @Default("6")
        public final int clusterMapFixedTimeoutDatanodeErrorThreshold
        The threshold for the number of consecutive errors to tolerate for a datanode.
      • clusterMapFixedTimeoutDataNodeRetryBackoffMs

        @Config("clustermap.fixedtimeout.datanode.retry.backoff.ms")
        @Default("5 * 60 * 1000")
        public final int clusterMapFixedTimeoutDataNodeRetryBackoffMs
        The time to wait before a datanode is retried after it has been determined to be down.
      • clusterMapFixedTimeoutDiskErrorThreshold

        @Config("clustermap.fixedtimeout.disk.error.threshold")
        @Default("1")
        public final int clusterMapFixedTimeoutDiskErrorThreshold
        The threshold for the number of errors to tolerate for a disk.
      • clusterMapFixedTimeoutDiskRetryBackoffMs

        @Config("clustermap.fixedtimeout.disk.retry.backoff.ms")
        @Default("10 * 60 * 1000")
        public final int clusterMapFixedTimeoutDiskRetryBackoffMs
        The time to wait before a disk is retried after it has been determined to be down.
      • clusterMapFixedTimeoutReplicaErrorThreshold

        @Config("clustermap.fixedtimeout.replica.error.threshold")
        @Default("1")
        public final int clusterMapFixedTimeoutReplicaErrorThreshold
        The threshold for the number of errors to tolerate for a replica.
      • clusterMapFixedTimeoutReplicaRetryBackoffMs

        @Config("clustermap.fixedtimeout.replica.retry.backoff.ms")
        @Default("10 * 60 * 1000")
        public final int clusterMapFixedTimeoutReplicaRetryBackoffMs
        The time to wait before a replica is retried after it has been determined to be down.
      • clusterMapSslEnabledDatacenters

        @Config("clustermap.ssl.enabled.datacenters")
        @Default("")
        public final java.lang.String clusterMapSslEnabledDatacenters
        List of Datacenters to which local node needs SSL encryption to communicate
      • clusterMapClusterAgentsFactory

        @Config("clustermap.clusteragents.factory")
        @Default("com.github.ambry.clustermap.StaticClusterAgentsFactory")
        public final java.lang.String clusterMapClusterAgentsFactory
        The clustermap agent factory to use for instantiating the Cluster Map and the Cluster Participant.
      • clusterMapClusterChangeHandlerType

        @Config("clustermap.cluster.change.handler.type")
        @Default("SimpleClusterChangeHandler")
        public final java.lang.String clusterMapClusterChangeHandlerType
        The cluster change handler to use for Cluster Map.
      • clusterMapDataNodeConfigSourceType

        @Config("clustermap.data.node.config.source.type")
        @Default("INSTANCE_CONFIG")
        public final DataNodeConfigSourceType clusterMapDataNodeConfigSourceType
        The DataNodeConfigSource implementation to use with the Helix-based Cluster Map.
      • clusterMapDcsZkConnectStrings

        @Config("clustermap.dcs.zk.connect.strings")
        @Default("")
        public final java.lang.String clusterMapDcsZkConnectStrings
        Serialized json containing the information about all the zk hosts that the Helix based cluster manager should be aware of. This information should be of the following form:
         {
           "zkInfo" : [
             {
               "datacenter":"dc1",
               "id": "1",
               "zkConnectStr":"abc.example.com:2199,xyz.example.com:2299",
             },
             {
               "datacenter":"dc2",
               "id" : "2",
               "zkConnectStr":"def.example.com:2300",
             },
             {
               "datacenter":"cloud-dc",
               "id" : "3",
               "replicaType": "CLOUD_BACKED"
             }
           ]
         }
         
        Also, there could be multiple zk connection strings within same datacenter(except for cloud-dc). The intention is to allow ambry server to participate into multiple clusters for special case like migrating ambry to another ZK. For ambry frontend, if there are multiple zk connection strings, only the first one will be adopted.
      • clusterMapClusterName

        @Config("clustermap.cluster.name")
        public final java.lang.String clusterMapClusterName
        The name of the associated cluster for this node.
      • clusterMapDatacenterName

        @Config("clustermap.datacenter.name")
        public final java.lang.String clusterMapDatacenterName
        The name of the associated datacenter for this node.
      • clusterMapHostName

        @Config("clustermap.host.name")
        public final java.lang.String clusterMapHostName
        The host name associated with this node.
      • clusterMapPort

        @Config("clustermap.port")
        @Default("null")
        public final java.lang.Integer clusterMapPort
        The port number associated with this node.
      • clusterMapResolveHostnames

        @Config("clustermap.resolve.hostnames")
        @Default("true")
        public final boolean clusterMapResolveHostnames
        Indicates if a reverse DNS lookup should be used to try and obtain the fully qualified domain names of cluster map host entries. By default this is enabled and disabling should only be needed when a node's name cannot be looked-up via a reverse lookup. For example when the node is known to Ambry by a CNAME record. Beware that disabling this option also prevents Ambry from checking if a nodes naming configuration is correct. For example there is no way for Ambry to check if the node config for 'host1.example.com' is actually deployed on a host called 'host1.example.com'.
      • clusterMapDefaultPartitionClass

        @Config("clustermap.default.partition.class")
        @Default("max-replicas-all-datacenters")
        public final java.lang.String clusterMapDefaultPartitionClass
        The partition class to assign to a partition if one is not supplied
      • clustermapCurrentXid

        @Config("clustermap.current.xid")
        @Default("Long.MAX_VALUE")
        public final java.lang.Long clustermapCurrentXid
        The current xid for this cluster manager. Any changes beyond this xid will be ignored by the cluster manager.
      • clusterMapEnablePartitionOverride

        @Config("clustermap.enable.partition.override")
        @Default("false")
        public final boolean clusterMapEnablePartitionOverride
        Indicate if cluster manager enables override on properties of partition. These properties include partition state and partition class etc. By default this config is disabled, the state of partition is dynamically updated based on SEALED list from Helix. When something goes bad and partition override is enabled, cluster manager uses partition properties in Helix PropertyStore as source of truth to resolve partition state and ignores any changes from SEALED list in InstanceConfig.
      • clustermapListenCrossColo

        @Config("clustermap.listen.cross.colo")
        @Default("true")
        public final boolean clustermapListenCrossColo
        If set to false, the Helix based cluster manager will only listen to changes to the cluster in the local colo. It will only connect to the remote ZK servers during initialization.
      • clustermapVcrDatacenterName

        @Config("clustermap.vcr.datacenter.name")
        public final java.lang.String clustermapVcrDatacenterName
        Name of the datacenter of vcr nodes. It is expected that all the vcr nodes will reside in the same datacenter.
      • clustermapStateModelDefinition

        @Config("clustermap.state.model.definition")
        @Default("AmbryLeaderStandby")
        public final java.lang.String clustermapStateModelDefinition
        State model definition to register with helix cluster.
      • clustermapEnableStateModelListener

        @Config("clustermap.enable.state.model.listener")
        @Default("false")
        public final boolean clustermapEnableStateModelListener
        Whether to enable state model listeners to take actions when state transition occurs.
      • clustermapReplicaCatchupAcceptableLagBytes

        @Config("clustermap.replica.catchup.acceptable.lag.bytes")
        public final long clustermapReplicaCatchupAcceptableLagBytes
        The maximum replication lag in bytes that is acceptable to consider replica has caught up.
      • clustermapReplicaCatchupTarget

        @Config("clustermap.replica.catchup.target")
        public final int clustermapReplicaCatchupTarget
        The minimum number of peers that a bootstrap replica is required to catch up with. If target is set to 0, then ReplicaSyncUpManager will use number of replicas in local dc as catchup target.
      • clustermapWritablePartitionMinReplicaCount

        @Config("clustermap.writable.partition.min.replica.count")
        public final int clustermapWritablePartitionMinReplicaCount
        The minimum number of replicas in local datacenter required for a partition to serve PUT request. This is used to get writable partitions for PUT operation. Any partition with replica count larger than or equal to this number is acceptable to be considered as a candidate.
      • clustermapUpdateDatanodeInfo

        @Config("clustermap.update.datanode.info")
        @Default("false")
        public final boolean clustermapUpdateDatanodeInfo
        Whether to allow participant to dynamically update its datanode info in cluster.
      • clustermapRecoveryTestPartitionLayout

        @Config("clustermap.recovery.test.partition.layout")
        @Default("{}")
        public final org.json.JSONObject clustermapRecoveryTestPartitionLayout
        Partition layout json for recovery test cluster map.
      • clustermapRecoveryTestHardwareLayout

        @Config("clustermap.recovery.test.hardware.layout")
        @Default("{}")
        public final org.json.JSONObject clustermapRecoveryTestHardwareLayout
        Hardware layout json for recovery test cluster map.
      • clustermapMaxDiskCapacityInBytes

        @Config("clustermap.max.disk.capacity.in.bytes")
        public final long clustermapMaxDiskCapacityInBytes
        Max capacity of a disk in bytes.
      • clustermapEnableContainerDeletionAggregation

        @Config("clustermap.enable.container.deletion.aggregation")
        @Default("false")
        public final boolean clustermapEnableContainerDeletionAggregation
        True to enable aggregation phase for container deletion.
      • clustermapRetryDisablePartitionCompletionBackoffMs

        @Config("clustermap.retry.disable.partition.completion.backoff.ms")
        public final int clustermapRetryDisablePartitionCompletionBackoffMs
        Time to wait before checking if disabling partition has completed. This is only used when Helix is adopted and datanode tries to remove certain replica entry from InstanceConfig. TODO remove this config after migrating ambry to PropertyStore (in Helix).
      • clustermapEnableAggregatedMonthlyAccountReport

        @Config("clustermap.enable.aggregated.monthly.account.report")
        @Default("false")
        public final boolean clustermapEnableAggregatedMonthlyAccountReport
        True to enable aggregation task to generate a base account report for each month.