blob: 71d5280d0247ff27c1cfbb02b87d80213d8f52e8 [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.omid.tso;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.Module;
import org.apache.omid.NetworkUtils;
import org.apache.omid.YAMLUtils;
import org.apache.omid.metrics.MetricsRegistry;
import org.apache.omid.tools.hbase.SecureHBaseConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Reads the configuration parameters of a TSO server instance from CONFIG_FILE_NAME.
* If file CONFIG_FILE_NAME is missing defaults to DEFAULT_CONFIG_FILE_NAME
*/
@SuppressWarnings("all")
public class TSOServerConfig extends SecureHBaseConfig {
private static final Logger LOG = LoggerFactory.getLogger(TSOServerConfig.class);
private static final String CONFIG_FILE_NAME = "omid-server-configuration.yml";
private static final String DEFAULT_CONFIG_FILE_NAME = "default-omid-server-configuration.yml";
public static enum WAIT_STRATEGY {
HIGH_THROUGHPUT,
LOW_CPU
};
// ----------------------------------------------------------------------------------------------------------------
// Instantiation
// ----------------------------------------------------------------------------------------------------------------
public TSOServerConfig() {
this(CONFIG_FILE_NAME);
}
@VisibleForTesting
TSOServerConfig(String configFileName) {
new YAMLUtils().loadSettings(configFileName, DEFAULT_CONFIG_FILE_NAME, this);
}
// ----------------------------------------------------------------------------------------------------------------
// Configuration parameters
// ----------------------------------------------------------------------------------------------------------------
private Module timestampStoreModule;
private Module commitTableStoreModule;
private Module leaseModule;
private int port;
private MetricsRegistry metrics;
private int conflictMapSize;
private int numConcurrentCTWriters;
private int batchSizePerCTWriter;
private int batchPersistTimeoutInMs;
private String waitStrategy;
private String networkIfaceName = NetworkUtils.getDefaultNetworkInterface();
public Boolean getLowLatency() {
return lowLatency;
}
public void setLowLatency(Boolean lowLatency) {
this.lowLatency = lowLatency;
}
private Boolean lowLatency;
public boolean getMonitorContext() {
return monitorContext;
}
public void setMonitorContext(boolean monitorContext) {
this.monitorContext = monitorContext;
}
public boolean monitorContext;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public int getConflictMapSize() {
return conflictMapSize;
}
public void setConflictMapSize(int conflictMapSize) {
this.conflictMapSize = conflictMapSize;
}
public int getNumConcurrentCTWriters() {
return numConcurrentCTWriters;
}
public void setNumConcurrentCTWriters(int numConcurrentCTWriters) {
this.numConcurrentCTWriters = numConcurrentCTWriters;
}
public int getBatchSizePerCTWriter() {
return batchSizePerCTWriter;
}
public void setBatchSizePerCTWriter(int batchSizePerCTWriter) {
this.batchSizePerCTWriter = batchSizePerCTWriter;
}
public int getBatchPersistTimeoutInMs() {
return batchPersistTimeoutInMs;
}
public void setBatchPersistTimeoutInMs(int value) {
this.batchPersistTimeoutInMs = value;
}
public String getNetworkIfaceName() {
return networkIfaceName;
}
public void setNetworkIfaceName(String networkIfaceName) {
this.networkIfaceName = networkIfaceName;
}
public Module getTimestampStoreModule() {
return timestampStoreModule;
}
public void setTimestampStoreModule(Module timestampStoreModule) {
this.timestampStoreModule = timestampStoreModule;
}
public Module getCommitTableStoreModule() {
return commitTableStoreModule;
}
public void setCommitTableStoreModule(Module commitTableStoreModule) {
this.commitTableStoreModule = commitTableStoreModule;
}
public Module getLeaseModule() {
return leaseModule;
}
public void setLeaseModule(Module leaseModule) {
this.leaseModule = leaseModule;
}
public MetricsRegistry getMetrics() {
return metrics;
}
public void setMetrics(MetricsRegistry metrics) {
this.metrics = metrics;
}
public String getWaitStrategy() {
return waitStrategy;
}
public WAIT_STRATEGY getWaitStrategyEnum() {
return TSOServerConfig.WAIT_STRATEGY.valueOf(waitStrategy);
}
public void setWaitStrategy(String waitStrategy) {
this.waitStrategy = waitStrategy;
}
}