blob: 6fede5e6249e40d4abdefdacb7bbd79243a932c5 [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.db.metadata.schemaregion.rocksdb;
import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.rocksdb.util.SizeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class RSchemaConfLoader {
private int maxBackgroundJobs = 10;
private int blockSizeDeviation = 5;
private int blockRestartInterval = 10;
private int maxWriteBufferNumber = 6;
private double bloomFilterPolicy = 64;
private long blockSize = 4 * SizeUnit.KB;
private long writeBufferSize = 64 * SizeUnit.KB;
private long maxTotalWalSize = 64 * SizeUnit.KB;
private long blockCache =
IoTDBDescriptor.getInstance().getConfig().getAllocateMemoryForSchemaRegion() * 2 / 3;
private long blockCacheCompressed =
IoTDBDescriptor.getInstance().getConfig().getAllocateMemoryForSchemaRegion() / 3;
private static final String ROCKSDB_CONFIG_FILE_NAME = "schema-rocksdb.properties";
private static final Logger logger = LoggerFactory.getLogger(RSchemaConfLoader.class);
public RSchemaConfLoader() {
loadProperties();
}
private void loadProperties() {
String iotdbHomePath = System.getProperty(IoTDBConstant.IOTDB_HOME, null);
String rocksdbConfigPath =
iotdbHomePath + File.separatorChar + "conf" + File.separatorChar + ROCKSDB_CONFIG_FILE_NAME;
try (InputStream in = new BufferedInputStream(new FileInputStream(rocksdbConfigPath))) {
Properties properties = new Properties();
properties.load(in);
setBlockCache(
Long.parseLong(properties.getProperty("block_cache_size", Long.toString(blockCache))));
setBlockCacheCompressed(
Long.parseLong(
properties.getProperty(
"block_cache_compressed_size", Long.toString(blockCacheCompressed))));
setBlockSize(Long.parseLong(properties.getProperty("block_size", Long.toString(blockSize))));
setWriteBufferSize(
Long.parseLong(
properties.getProperty("write_buffer_size", Long.toString(writeBufferSize))));
setMaxTotalWalSize(
Long.parseLong(
properties.getProperty("max_total_wal_size", Long.toString(maxTotalWalSize))));
setMaxBackgroundJobs(
Integer.parseInt(
properties.getProperty(
"max_background_job_num", Integer.toString(maxBackgroundJobs))));
setBlockSizeDeviation(
Integer.parseInt(
properties.getProperty(
"block_size_deviation", Integer.toString(blockSizeDeviation))));
setBlockRestartInterval(
Integer.parseInt(
properties.getProperty(
"block_restart_interval", Integer.toString(blockRestartInterval))));
setMaxWriteBufferNumber(
Integer.parseInt(
properties.getProperty(
"max_write_buffer_num", Integer.toString(maxWriteBufferNumber))));
setBloomFilterPolicy(
Double.parseDouble(
properties.getProperty("bloom_filter_policy", Double.toString(bloomFilterPolicy))));
} catch (FileNotFoundException e) {
logger.warn("Fail to find rocksdb config file {}", rocksdbConfigPath, e);
} catch (IOException e) {
logger.warn("Cannot load rocksdb config file, use default configuration", e);
}
}
public long getBlockCache() {
return blockCache;
}
private void setBlockCache(long blockCache) {
this.blockCache = blockCache;
}
public long getBlockCacheCompressed() {
return blockCacheCompressed;
}
private void setBlockCacheCompressed(long blockCacheCompressed) {
this.blockCacheCompressed = blockCacheCompressed;
}
public long getWriteBufferSize() {
return writeBufferSize;
}
private void setWriteBufferSize(long writeBufferSize) {
this.writeBufferSize = writeBufferSize;
}
public long getMaxTotalWalSize() {
return maxTotalWalSize;
}
private void setMaxTotalWalSize(long maxTotalWalSize) {
this.maxTotalWalSize = maxTotalWalSize;
}
public int getMaxBackgroundJobs() {
return maxBackgroundJobs;
}
private void setMaxBackgroundJobs(int maxBackgroundJobs) {
this.maxBackgroundJobs = maxBackgroundJobs;
}
public double getBloomFilterPolicy() {
return bloomFilterPolicy;
}
private void setBloomFilterPolicy(double bloomFilterPolicy) {
this.bloomFilterPolicy = bloomFilterPolicy;
}
public int getBlockSizeDeviation() {
return blockSizeDeviation;
}
private void setBlockSizeDeviation(int blockSizeDeviation) {
this.blockSizeDeviation = blockSizeDeviation;
}
public int getBlockRestartInterval() {
return blockRestartInterval;
}
private void setBlockRestartInterval(int blockRestartInterval) {
this.blockRestartInterval = blockRestartInterval;
}
public int getMaxWriteBufferNumber() {
return maxWriteBufferNumber;
}
private void setMaxWriteBufferNumber(int maxWriteBufferNumber) {
this.maxWriteBufferNumber = maxWriteBufferNumber;
}
public long getBlockSize() {
return blockSize;
}
private void setBlockSize(long blockSize) {
this.blockSize = blockSize;
}
}