Package com.github.ambry.config
Class ClusterMapConfig
- java.lang.Object
-
- com.github.ambry.config.ClusterMapConfig
-
public class ClusterMapConfig extends java.lang.Object
The configs for resource state.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
AMBRY_STATE_MODEL_DEF
static java.lang.String
CLUSTERMAP_CLUSTER_NAME
static java.lang.String
CLUSTERMAP_DATA_NODE_CONFIG_SOURCE_TYPE
static java.lang.String
CLUSTERMAP_DATACENTER_NAME
static java.lang.String
CLUSTERMAP_HOST_NAME
static java.lang.String
CLUSTERMAP_MAX_DISK_CAPACITY_IN_BYTES
static java.lang.String
CLUSTERMAP_PORT
java.lang.String
clusterMapClusterAgentsFactory
The clustermap agent factory to use for instantiating the Cluster Map and the Cluster Participant.java.lang.String
clusterMapClusterChangeHandlerType
The cluster change handler to use for Cluster Map.java.lang.String
clusterMapClusterName
The name of the associated cluster for this node.java.lang.Long
clustermapCurrentXid
The current xid for this cluster manager.java.lang.String
clusterMapDatacenterName
The name of the associated datacenter for this node.DataNodeConfigSourceType
clusterMapDataNodeConfigSourceType
TheDataNodeConfigSource
implementation to use with the Helix-based Cluster Map.java.lang.String
clusterMapDcsZkConnectStrings
Serialized json containing the information about all the zk hosts that the Helix based cluster manager should be aware of.java.lang.String
clusterMapDefaultPartitionClass
The partition class to assign to a partition if one is not suppliedboolean
clustermapEnableAggregatedMonthlyAccountReport
True to enable aggregation task to generate a base account report for each month.boolean
clustermapEnableContainerDeletionAggregation
True to enable aggregation phase for container deletion.boolean
clusterMapEnablePartitionOverride
Indicate if cluster manager enables override on properties of partition.boolean
clustermapEnableStateModelListener
Whether to enable state model listeners to take actions when state transition occurs.int
clusterMapFixedTimeoutDatanodeErrorThreshold
The threshold for the number of consecutive errors to tolerate for a datanode.int
clusterMapFixedTimeoutDataNodeRetryBackoffMs
The time to wait before a datanode is retried after it has been determined to be down.int
clusterMapFixedTimeoutDiskErrorThreshold
The threshold for the number of errors to tolerate for a disk.int
clusterMapFixedTimeoutDiskRetryBackoffMs
The time to wait before a disk is retried after it has been determined to be down.int
clusterMapFixedTimeoutReplicaErrorThreshold
The threshold for the number of errors to tolerate for a replica.int
clusterMapFixedTimeoutReplicaRetryBackoffMs
The time to wait before a replica is retried after it has been determined to be down.java.lang.String
clusterMapHostName
The host name associated with this node.boolean
clustermapListenCrossColo
If set to false, the Helix based cluster manager will only listen to changes to the cluster in the local colo.long
clustermapMaxDiskCapacityInBytes
Max capacity of a disk in bytes.java.lang.Integer
clusterMapPort
The port number associated with this node.org.json.JSONObject
clustermapRecoveryTestHardwareLayout
Hardware layout json for recovery test cluster map.org.json.JSONObject
clustermapRecoveryTestPartitionLayout
Partition layout json for recovery test cluster map.long
clustermapReplicaCatchupAcceptableLagBytes
The maximum replication lag in bytes that is acceptable to consider replica has caught up.int
clustermapReplicaCatchupTarget
The minimum number of peers that a bootstrap replica is required to catch up with.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.java.lang.String
clusterMapResourceStatePolicyFactory
The factory class used to get the resource state policies.int
clustermapRetryDisablePartitionCompletionBackoffMs
Time to wait before checking if disabling partition has completed.java.lang.String
clusterMapSslEnabledDatacenters
List of Datacenters to which local node needs SSL encryption to communicatejava.lang.String
clustermapStateModelDefinition
State model definition to register with helix cluster.boolean
clustermapUpdateDatanodeInfo
Whether to allow participant to dynamically update its datanode info in cluster.java.lang.String
clustermapVcrDatacenterName
Name of the datacenter of vcr nodes.int
clustermapWritablePartitionMinReplicaCount
The minimum number of replicas in local datacenter required for a partition to serve PUT request.static java.lang.String
DEFAULT_STATE_MODEL_DEF
static java.lang.String
ENABLE_AGGREGATED_MONTHLY_ACCOUNT_REPORT
static java.lang.String
OLD_STATE_MODEL_DEF
-
Constructor Summary
Constructors Constructor Description ClusterMapConfig(VerifiableProperties verifiableProperties)
-
-
-
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_PORT
public static final java.lang.String CLUSTERMAP_PORT
- 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
TheDataNodeConfigSource
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, thenReplicaSyncUpManager
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).
-
-
Constructor Detail
-
ClusterMapConfig
public ClusterMapConfig(VerifiableProperties verifiableProperties)
-
-