blob: f6f291a95a9567874e7c89ba47de6a3efdea5013 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.iotdb.it.env.cluster.config;
import org.apache.iotdb.itbase.env.CommonConfig;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import static org.apache.iotdb.it.env.cluster.ClusterConstant.CONFIG_NODE_CONSENSUS_PROTOCOL_CLASS;
import static org.apache.iotdb.it.env.cluster.ClusterConstant.DATA_REGION_CONSENSUS_PROTOCOL_CLASS;
import static org.apache.iotdb.it.env.cluster.ClusterConstant.DATA_REPLICATION_FACTOR;
import static org.apache.iotdb.it.env.cluster.ClusterConstant.HYPHEN;
import static org.apache.iotdb.it.env.cluster.ClusterConstant.SCHEMA_REGION_CONSENSUS_PROTOCOL_CLASS;
import static org.apache.iotdb.it.env.cluster.ClusterConstant.SCHEMA_REPLICATION_FACTOR;
import static org.apache.iotdb.it.env.cluster.EnvUtils.fromConsensusFullNameToAbbr;
public class MppCommonConfig extends MppBaseConfig implements CommonConfig {
public MppCommonConfig() {
super();
// Set the default disk_space_warning_threshold in ClusterIT environment to 1%
setProperty("disk_space_warning_threshold", String.valueOf(0.01));
}
// This constructor is no longer in use
protected MppCommonConfig(String filePath) throws IOException {
super(filePath);
}
@Override
public void updateProperties(MppBaseConfig persistentConfig) {
if (persistentConfig instanceof MppCommonConfig) {
super.updateProperties(persistentConfig);
} else {
throw new UnsupportedOperationException(
"MppCommonConfig can't be override by an instance of "
+ persistentConfig.getClass().getCanonicalName());
}
}
@Override
public MppBaseConfig emptyClone() {
return new MppCommonConfig();
}
@Override
public CommonConfig setMaxNumberOfPointsInPage(int maxNumberOfPointsInPage) {
setProperty("max_number_of_points_in_page", String.valueOf(maxNumberOfPointsInPage));
return this;
}
@Override
public CommonConfig setPageSizeInByte(int pageSizeInByte) {
setProperty("page_size_in_byte", String.valueOf(pageSizeInByte));
return this;
}
@Override
public CommonConfig setGroupSizeInByte(int groupSizeInByte) {
setProperty("group_size_in_byte", String.valueOf(groupSizeInByte));
return this;
}
@Override
public CommonConfig setMemtableSizeThreshold(long memtableSizeThreshold) {
setProperty("memtable_size_threshold", String.valueOf(memtableSizeThreshold));
return this;
}
@Override
public CommonConfig setPartitionInterval(long partitionInterval) {
setProperty("time_partition_interval", String.valueOf(partitionInterval));
return this;
}
@Override
public CommonConfig setCompressor(String compressor) {
setProperty("compressor", compressor);
return this;
}
@Override
public CommonConfig setUdfMemoryBudgetInMB(float udfCollectorMemoryBudgetInMB) {
// udf_memory_budget_in_mb
// udf_reader_transformer_collector_memory_proportion
setProperty("udf_memory_budget_in_mb", String.valueOf(udfCollectorMemoryBudgetInMB * 3));
return this;
}
@Override
public CommonConfig setEnableSeqSpaceCompaction(boolean enableSeqSpaceCompaction) {
setProperty("enable_seq_space_compaction", String.valueOf(enableSeqSpaceCompaction));
return this;
}
@Override
public CommonConfig setEnableUnseqSpaceCompaction(boolean enableUnseqSpaceCompaction) {
setProperty("enable_unseq_space_compaction", String.valueOf(enableUnseqSpaceCompaction));
return this;
}
@Override
public CommonConfig setEnableCrossSpaceCompaction(boolean enableCrossSpaceCompaction) {
setProperty("enable_cross_space_compaction", String.valueOf(enableCrossSpaceCompaction));
return this;
}
@Override
public CommonConfig setMaxInnerCompactionCandidateFileNum(
int maxInnerCompactionCandidateFileNum) {
setProperty(
"max_inner_compaction_candidate_file_num",
String.valueOf(maxInnerCompactionCandidateFileNum));
return this;
}
@Override
public CommonConfig setAutoCreateSchemaEnabled(boolean enableAutoCreateSchema) {
setProperty("enable_auto_create_schema", String.valueOf(enableAutoCreateSchema));
return this;
}
@Override
public CommonConfig setEnableLastCache(boolean lastCacheEnable) {
setProperty("enable_last_cache", String.valueOf(lastCacheEnable));
return this;
}
@Override
public CommonConfig setPrimitiveArraySize(int primitiveArraySize) {
setProperty("primitive_array_size", String.valueOf(primitiveArraySize));
return this;
}
@Override
public CommonConfig setAvgSeriesPointNumberThreshold(int avgSeriesPointNumberThreshold) {
setProperty("avg_series_point_number_threshold", String.valueOf(avgSeriesPointNumberThreshold));
return this;
}
@Override
public CommonConfig setMaxTsBlockLineNumber(int maxTsBlockLineNumber) {
setProperty("max_tsblock_line_number", String.valueOf(maxTsBlockLineNumber));
return this;
}
@Override
public CommonConfig setConfigRegionRatisRPCLeaderElectionTimeoutMaxMs(int maxMs) {
setProperty("config_node_ratis_rpc_leader_election_timeout_max_ms", String.valueOf(maxMs));
return this;
}
@Override
public CommonConfig setConfigNodeConsensusProtocolClass(String configNodeConsensusProtocolClass) {
setProperty("config_node_consensus_protocol_class", configNodeConsensusProtocolClass);
return this;
}
@Override
public CommonConfig setSchemaRegionConsensusProtocolClass(
String schemaRegionConsensusProtocolClass) {
setProperty("schema_region_consensus_protocol_class", schemaRegionConsensusProtocolClass);
return this;
}
@Override
public CommonConfig setDataRegionConsensusProtocolClass(String dataRegionConsensusProtocolClass) {
setProperty("data_region_consensus_protocol_class", dataRegionConsensusProtocolClass);
return this;
}
@Override
public CommonConfig setSchemaRegionGroupExtensionPolicy(String schemaRegionGroupExtensionPolicy) {
setProperty("schema_region_group_extension_policy", schemaRegionGroupExtensionPolicy);
return this;
}
@Override
public CommonConfig setDefaultSchemaRegionGroupNumPerDatabase(int schemaRegionGroupPerDatabase) {
setProperty(
"default_schema_region_group_num_per_database",
String.valueOf(schemaRegionGroupPerDatabase));
return this;
}
@Override
public CommonConfig setDataRegionGroupExtensionPolicy(String dataRegionGroupExtensionPolicy) {
setProperty("data_region_group_extension_policy", dataRegionGroupExtensionPolicy);
return this;
}
@Override
public CommonConfig setDefaultDataRegionGroupNumPerDatabase(int dataRegionGroupPerDatabase) {
setProperty(
"default_data_region_group_num_per_database", String.valueOf(dataRegionGroupPerDatabase));
return this;
}
@Override
public CommonConfig setSchemaReplicationFactor(int schemaReplicationFactor) {
setProperty("schema_replication_factor", String.valueOf(schemaReplicationFactor));
return this;
}
@Override
public CommonConfig setDataReplicationFactor(int dataReplicationFactor) {
setProperty("data_replication_factor", String.valueOf(dataReplicationFactor));
return this;
}
@Override
public CommonConfig setTimePartitionInterval(long timePartitionInterval) {
setProperty("time_partition_interval", String.valueOf(timePartitionInterval));
return this;
}
@Override
public CommonConfig setTimestampPrecision(String timestampPrecision) {
setProperty("timestamp_precision", timestampPrecision);
return this;
}
@Override
public TimeUnit getTimestampPrecision() {
String precision = properties.getProperty("timestamp_precision", "ms");
switch (precision) {
case "ms":
return TimeUnit.MILLISECONDS;
case "us":
return TimeUnit.MICROSECONDS;
case "ns":
return TimeUnit.NANOSECONDS;
default:
throw new UnsupportedOperationException(precision);
}
}
@Override
public CommonConfig setTimestampPrecisionCheckEnabled(boolean timestampPrecisionCheckEnabled) {
setProperty(
"timestamp_precision_check_enabled", String.valueOf(timestampPrecisionCheckEnabled));
return this;
}
@Override
public CommonConfig setEnableMemControl(boolean enableMemControl) {
setProperty("enable_mem_control", String.valueOf(enableMemControl));
return this;
}
@Override
public CommonConfig setConfigNodeRatisSnapshotTriggerThreshold(
int ratisSnapshotTriggerThreshold) {
setProperty(
"config_node_ratis_snapshot_trigger_threshold",
String.valueOf(ratisSnapshotTriggerThreshold));
return this;
}
@Override
public CommonConfig setMaxDegreeOfIndexNode(int maxDegreeOfIndexNode) {
setProperty("max_degree_of_index_node", String.valueOf(maxDegreeOfIndexNode));
return this;
}
@Override
public CommonConfig setEnableMQTTService(boolean enableMQTTService) {
setProperty("enable_mqtt_service", String.valueOf(enableMQTTService));
return this;
}
@Override
public CommonConfig setSchemaEngineMode(String schemaEngineMode) {
setProperty("schema_engine_mode", schemaEngineMode);
return this;
}
@Override
public CommonConfig setSelectIntoInsertTabletPlanRowLimit(
int selectIntoInsertTabletPlanRowLimit) {
setProperty(
"select_into_insert_tablet_plan_row_limit",
String.valueOf(selectIntoInsertTabletPlanRowLimit));
return this;
}
@Override
public CommonConfig setEnableAutoLeaderBalanceForRatisConsensus(
boolean enableAutoLeaderBalanceForRatisConsensus) {
setProperty(
"enable_auto_leader_balance_for_ratis_consensus",
String.valueOf(enableAutoLeaderBalanceForRatisConsensus));
return this;
}
@Override
public CommonConfig setEnableAutoLeaderBalanceForIoTConsensus(
boolean enableAutoLeaderBalanceForIoTConsensus) {
setProperty(
"enable_auto_leader_balance_for_iot_consensus",
String.valueOf(enableAutoLeaderBalanceForIoTConsensus));
return this;
}
@Override
public CommonConfig setQueryThreadCount(int queryThreadCount) {
if (queryThreadCount <= 0) {
queryThreadCount = Runtime.getRuntime().availableProcessors();
}
setProperty("query_thread_count", String.valueOf(queryThreadCount));
return this;
}
@Override
public CommonConfig setDegreeOfParallelism(int degreeOfParallelism) {
setProperty("degree_of_query_parallelism", String.valueOf(degreeOfParallelism));
return this;
}
@Override
public CommonConfig setDataRatisTriggerSnapshotThreshold(long threshold) {
setProperty("data_region_ratis_snapshot_trigger_threshold", String.valueOf(threshold));
return this;
}
@Override
public CommonConfig setSeriesSlotNum(int seriesSlotNum) {
setProperty("series_slot_num", String.valueOf(seriesSlotNum));
return this;
}
@Override
public CommonConfig setSchemaMemoryAllocate(String schemaMemoryAllocate) {
setProperty("schema_memory_proportion", String.valueOf(schemaMemoryAllocate));
return this;
}
@Override
public CommonConfig setWriteMemoryProportion(String writeMemoryProportion) {
setProperty("write_memory_proportion", writeMemoryProportion);
return this;
}
@Override
public CommonConfig setQuotaEnable(boolean quotaEnable) {
setProperty("quota_enable", String.valueOf(quotaEnable));
return this;
}
@Override
public CommonConfig setSortBufferSize(long sortBufferSize) {
setProperty("sort_buffer_size_in_bytes", String.valueOf(sortBufferSize));
return this;
}
@Override
public CommonConfig setMaxTsBlockSizeInByte(long maxTsBlockSizeInByte) {
setProperty("max_tsblock_size_in_bytes", String.valueOf(maxTsBlockSizeInByte));
return this;
}
@Override
public CommonConfig setClusterTimeseriesLimitThreshold(long clusterSchemaLimitThreshold) {
setProperty("cluster_timeseries_limit_threshold", String.valueOf(clusterSchemaLimitThreshold));
return this;
}
@Override
public CommonConfig setClusterDeviceLimitThreshold(long clusterDeviceLimitThreshold) {
setProperty("cluster_device_limit_threshold", String.valueOf(clusterDeviceLimitThreshold));
return this;
}
@Override
public CommonConfig setDatabaseLimitThreshold(long databaseLimitThreshold) {
setProperty("database_limit_threshold", String.valueOf(databaseLimitThreshold));
return this;
}
@Override
public CommonConfig setDataRegionPerDataNode(double dataRegionPerDataNode) {
setProperty("data_region_per_data_node", String.valueOf(dataRegionPerDataNode));
return this;
}
@Override
public CommonConfig setSchemaRegionPerDataNode(double schemaRegionPerDataNode) {
setProperty("schema_region_per_data_node", String.valueOf(schemaRegionPerDataNode));
return this;
}
@Override
public CommonConfig setPipeAirGapReceiverEnabled(boolean isPipeAirGapReceiverEnabled) {
setProperty("pipe_air_gap_receiver_enabled", String.valueOf(isPipeAirGapReceiverEnabled));
return this;
}
@Override
public CommonConfig setDriverTaskExecutionTimeSliceInMs(long driverTaskExecutionTimeSliceInMs) {
setProperty(
"driver_task_execution_time_slice_in_ms", String.valueOf(driverTaskExecutionTimeSliceInMs));
return this;
}
@Override
public CommonConfig setWalMode(String walMode) {
setProperty("wal_mode", walMode);
return this;
}
@Override
public CommonConfig setTagAttributeTotalSize(int tagAttributeTotalSize) {
setProperty("tag_attribute_total_size", String.valueOf(tagAttributeTotalSize));
return this;
}
@Override
public CommonConfig setTagAttributeMaxNum(int tagAttributeMaxNum) {
setProperty("tag_attribute_max_num", String.valueOf(tagAttributeMaxNum));
return this;
}
@Override
public CommonConfig setTagAttributeEntryMaxSize(int tagAttributeEntryMaxSize) {
setProperty("tag_attribute_entry_max_size", String.valueOf(tagAttributeEntryMaxSize));
return this;
}
// For part of the log directory
public String getClusterConfigStr() {
return fromConsensusFullNameToAbbr(properties.getProperty(CONFIG_NODE_CONSENSUS_PROTOCOL_CLASS))
+ HYPHEN
+ fromConsensusFullNameToAbbr(
properties.getProperty(SCHEMA_REGION_CONSENSUS_PROTOCOL_CLASS))
+ HYPHEN
+ fromConsensusFullNameToAbbr(properties.getProperty(DATA_REGION_CONSENSUS_PROTOCOL_CLASS))
+ HYPHEN
+ properties.getProperty(SCHEMA_REPLICATION_FACTOR)
+ HYPHEN
+ properties.getProperty(DATA_REPLICATION_FACTOR);
}
}