blob: c2a9a4b714b968964422dee3ac8bef8a5e515e99 [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;
/**
* The PathUtil class is a utility class to provide information about various
* znode paths. The following is the znode structure used for storing information.
* baseDir/ClockNode
* baseDir/TrasactionBasePath
* baseDir/TrasactionBasePath/TableA/revisionID
* baseDir/TrasactionBasePath/TableA/columnFamily-1
* baseDir/TrasactionBasePath/TableA/columnFamily-1/runnningTxns
* baseDir/TrasactionBasePath/TableA/columnFamily-1/abortedTxns
* baseDir/TrasactionBasePath/TableB/revisionID
* baseDir/TrasactionBasePath/TableB/columnFamily-1
* baseDir/TrasactionBasePath/TableB/columnFamily-1/runnningTxns
* baseDir/TrasactionBasePath/TableB/columnFamily-1/abortedTxns
*/
public class PathUtil {
static final String DATA_DIR = "/data";
static final String CLOCK_NODE = "/clock";
/**
* This method returns the data path associated with the currently
* running transactions of a given table and column/column family.
* @param baseDir
* @param tableName
* @param columnFamily
* @return The path of the running transactions data.
*/
static String getRunningTxnInfoPath(String baseDir, String tableName,
String columnFamily) {
String txnBasePath = getTransactionBasePath(baseDir);
String path = txnBasePath + "/" + tableName + "/" + columnFamily
+ "/runningTxns";
return path;
}
/**
* This method returns the data path associated with the aborted
* transactions of a given table and column/column family.
* @param baseDir The base directory for revision management.
* @param tableName The name of the table.
* @param columnFamily
* @return The path of the aborted transactions data.
*/
static String getAbortInformationPath(String baseDir, String tableName,
String columnFamily) {
String txnBasePath = getTransactionBasePath(baseDir);
String path = txnBasePath + "/" + tableName + "/" + columnFamily
+ "/abortData";
return path;
}
/**
* Gets the revision id node for a given table.
*
* @param baseDir the base dir for revision management.
* @param tableName the table name
* @return the revision id node path.
*/
static String getRevisionIDNode(String baseDir, String tableName) {
String rmBasePath = getTransactionBasePath(baseDir);
String revisionIDNode = rmBasePath + "/" + tableName + "/idgen";
return revisionIDNode;
}
/**
* Gets the lock management node for any znode that needs to be locked.
*
* @param path the path of the znode.
* @return the lock management node path.
*/
static String getLockManagementNode(String path) {
String lockNode = path + "_locknode_";
return lockNode;
}
/**
* This method returns the base path for the transaction data.
*
* @param baseDir The base dir for revision management.
* @return The base path for the transaction data.
*/
static String getTransactionBasePath(String baseDir) {
String txnBaseNode = baseDir + DATA_DIR;
return txnBaseNode;
}
/**
* Gets the txn data path for a given table.
*
* @param baseDir the base dir for revision management.
* @param tableName the table name
* @return the txn data path for the table.
*/
static String getTxnDataPath(String baseDir, String tableName) {
String txnBasePath = getTransactionBasePath(baseDir);
String path = txnBasePath + "/" + tableName;
return path;
}
/**
* This method returns the data path for clock node.
*
* @param baseDir
* @return The data path for clock.
*/
static String getClockPath(String baseDir) {
String clockNode = baseDir + CLOCK_NODE;
return clockNode;
}
}