blob: 2800fb6b4c81b749694aca3ca40f2ec48ddd0149 [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.transaction;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.omid.YAMLUtils;
import org.apache.omid.metrics.MetricsRegistry;
import org.apache.omid.tools.hbase.SecureHBaseConfig;
import org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel;
import org.apache.omid.tso.client.OmidClientConfiguration.PostCommitMode;
import org.apache.omid.tso.client.OmidClientConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
/**
* Configuration for HBase's Omid client side
*/
public class HBaseOmidClientConfiguration extends SecureHBaseConfig {
private static final String DEFAULT_CONFIG_FILE_NAME = "default-hbase-omid-client-config.yml";
private static final String CONFIG_FILE_NAME = "hbase-omid-client-config.yml";
private Configuration hbaseConfiguration = HBaseConfiguration.create();
private String commitTableName;
@Inject
private OmidClientConfiguration omidClientConfiguration;
private MetricsRegistry metrics;
// ----------------------------------------------------------------------------------------------------------------
// Instantiation
// ----------------------------------------------------------------------------------------------------------------
public static HBaseOmidClientConfiguration loadFromString(String yamlContent) {
return new HBaseOmidClientConfiguration(new YAMLUtils().loadStringAsMap(yamlContent));
}
public HBaseOmidClientConfiguration() {
this(CONFIG_FILE_NAME);
}
public <K, V> HBaseOmidClientConfiguration(Map<K, V> properties) {
try {
BeanUtils.populate(this, properties);
} catch (IllegalAccessException | InvocationTargetException e) {
throw new IllegalStateException(e);
}
}
@VisibleForTesting
HBaseOmidClientConfiguration(String configFileName) {
new YAMLUtils().loadSettings(configFileName, DEFAULT_CONFIG_FILE_NAME, this);
}
// ----------------------------------------------------------------------------------------------------------------
// Getters and setters for config params
// ----------------------------------------------------------------------------------------------------------------
public Configuration getHBaseConfiguration() {
return hbaseConfiguration;
}
public void setHBaseConfiguration(Configuration hbaseConfiguration) {
this.hbaseConfiguration = hbaseConfiguration;
}
public PostCommitMode getPostCommitMode() {
return omidClientConfiguration.getPostCommitMode();
}
public void setPostCommitMode(PostCommitMode postCommitMode) {
omidClientConfiguration.setPostCommitMode(postCommitMode);
}
public ConflictDetectionLevel getConflictAnalysisLevel() {
return omidClientConfiguration.getConflictAnalysisLevel();
}
public void setConflictAnalysisLevel(ConflictDetectionLevel conflictAnalysisLevel) {
omidClientConfiguration.setConflictAnalysisLevel(conflictAnalysisLevel);
}
public String getCommitTableName() {
return commitTableName;
}
@Inject(optional = true)
@Named("omid.client.hbase.commitTableName")
public void setCommitTableName(String commitTableName) {
this.commitTableName = commitTableName;
}
public OmidClientConfiguration getOmidClientConfiguration() {
return omidClientConfiguration;
}
public void setOmidClientConfiguration(OmidClientConfiguration omidClientConfiguration) {
this.omidClientConfiguration = omidClientConfiguration;
}
public MetricsRegistry getMetrics() {
return metrics;
}
@Inject(optional = true)
@Named("omid.client.hbase.metrics")
public void setMetrics(MetricsRegistry metrics) {
this.metrics = metrics;
}
// Delegation to make end-user life better
public OmidClientConfiguration.ConnType getConnectionType() {
return omidClientConfiguration.getConnectionType();
}
public void setReconnectionDelayInSecs(int reconnectionDelayInSecs) {
omidClientConfiguration.setReconnectionDelayInSecs(reconnectionDelayInSecs);
}
public void setExecutorThreads(int executorThreads) {
omidClientConfiguration.setExecutorThreads(executorThreads);
}
public int getRequestTimeoutInMs() {
return omidClientConfiguration.getRequestTimeoutInMs();
}
public void setConnectionString(String connectionString) {
omidClientConfiguration.setConnectionString(connectionString);
}
public void setRequestTimeoutInMs(int requestTimeoutInMs) {
omidClientConfiguration.setRequestTimeoutInMs(requestTimeoutInMs);
}
public void setZkConnectionTimeoutInSecs(int zkConnectionTimeoutInSecs) {
omidClientConfiguration.setZkConnectionTimeoutInSecs(zkConnectionTimeoutInSecs);
}
public void setConnectionType(OmidClientConfiguration.ConnType connectionType) {
omidClientConfiguration.setConnectionType(connectionType);
}
public void setRequestMaxRetries(int requestMaxRetries) {
omidClientConfiguration.setRequestMaxRetries(requestMaxRetries);
}
public int getZkConnectionTimeoutInSecs() {
return omidClientConfiguration.getZkConnectionTimeoutInSecs();
}
public void setRetryDelayInMs(int retryDelayInMs) {
omidClientConfiguration.setRetryDelayInMs(retryDelayInMs);
}
public int getExecutorThreads() {
return omidClientConfiguration.getExecutorThreads();
}
public int getRetryDelayInMs() {
return omidClientConfiguration.getRetryDelayInMs();
}
public String getConnectionString() {
return omidClientConfiguration.getConnectionString();
}
public int getRequestMaxRetries() {
return omidClientConfiguration.getRequestMaxRetries();
}
public int getReconnectionDelayInSecs() {
return omidClientConfiguration.getReconnectionDelayInSecs();
}
}