blob: ee2624285166ded661350f9b96436f4c15c0cd71 [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.hcatalog.hbase.snapshot;
import java.io.IOException;
import java.util.List;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;
/**
* This class is nothing but a delegate for the enclosed proxy,
* which is created upon setting the configuration.
*/
public class RevisionManagerEndpointClient implements RevisionManager, Configurable {
private Configuration conf = null;
private RevisionManager rmProxy;
@Override
public Configuration getConf() {
return this.conf;
}
@Override
public void setConf(Configuration arg0) {
this.conf = arg0;
}
@Override
public void initialize(Configuration conf) {
// do nothing
}
@Override
public void open() throws IOException {
// clone to adjust RPC settings unique to proxy
Configuration clonedConf = new Configuration(conf);
// conf.set("hbase.ipc.client.connect.max.retries", "0");
// conf.setInt(HConstants.HBASE_CLIENT_RPC_MAXATTEMPTS, 1);
clonedConf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1); // do not retry RPC
HTable table = new HTable(clonedConf, HConstants.ROOT_TABLE_NAME);
rmProxy = table.coprocessorProxy(RevisionManagerProtocol.class,
Bytes.toBytes("anyRow"));
rmProxy.open();
}
@Override
public void close() throws IOException {
rmProxy.close();
}
@Override
public void createTable(String table, List<String> columnFamilies) throws IOException {
rmProxy.createTable(table, columnFamilies);
}
@Override
public void dropTable(String table) throws IOException {
rmProxy.dropTable(table);
}
@Override
public Transaction beginWriteTransaction(String table, List<String> families) throws IOException {
return rmProxy.beginWriteTransaction(table, families);
}
@Override
public Transaction beginWriteTransaction(String table, List<String> families, long keepAlive)
throws IOException {
return rmProxy.beginWriteTransaction(table, families, keepAlive);
}
@Override
public void commitWriteTransaction(Transaction transaction) throws IOException {
rmProxy.commitWriteTransaction(transaction);
}
@Override
public void abortWriteTransaction(Transaction transaction) throws IOException {
rmProxy.abortWriteTransaction(transaction);
}
@Override
public List<FamilyRevision> getAbortedWriteTransactions(String table, String columnFamily)
throws IOException {
return rmProxy.getAbortedWriteTransactions(table, columnFamily);
}
@Override
public TableSnapshot createSnapshot(String tableName) throws IOException {
return rmProxy.createSnapshot(tableName);
}
@Override
public TableSnapshot createSnapshot(String tableName, long revision) throws IOException {
return rmProxy.createSnapshot(tableName, revision);
}
@Override
public void keepAlive(Transaction transaction) throws IOException {
rmProxy.keepAlive(transaction);
}
}