public interface HiveTxnManager
HiveTxnManagerImpl
rather than
implementing this directly.Modifier and Type | Method and Description |
---|---|
void |
acquireLocks(QueryPlan plan,
Context ctx,
String username)
Acquire all of the locks needed by a query.
|
void |
acquireLocks(QueryPlan plan,
Context ctx,
String username,
Driver.LockedDriverState lDrvState)
Acquire all of the locks needed by a query.
|
LockResponse |
acquireMaterializationRebuildLock(String dbName,
String tableName,
long txnId)
Acquire the materialization rebuild lock for a given view.
|
void |
closeTxnManager()
This call closes down the transaction manager.
|
void |
commitTxn()
Commit the current transaction.
|
long |
getCurrentTxnId()
if
isTxnOpen() , returns the currently active transaction ID. |
HiveLockManager |
getLockManager()
Get the lock manager.
|
int |
getStmtIdAndIncrement()
Should be though of more as a unique write operation ID in a given txn (at QueryPlan level).
|
long |
getTableWriteId(String dbName,
String tableName)
if
isTxnOpen() , returns the table write ID associated with current active transaction. |
String |
getTxnManagerName()
Get the name for currently installed transaction manager.
|
org.apache.hadoop.hive.common.ValidTxnList |
getValidTxns()
Get the transactions that are currently valid.
|
org.apache.hadoop.hive.common.ValidTxnWriteIdList |
getValidWriteIds(List<String> tableList,
String validTxnList)
Get the table write Ids that are valid for the current transaction.
|
void |
heartbeat()
Send a heartbeat to the transaction management storage so other Hive
clients know that the transaction and locks held by this client are
still valid.
|
boolean |
isImplicitTransactionOpen() |
boolean |
isTxnOpen() |
int |
lockDatabase(Hive hiveDB,
LockDatabaseDesc lockDb)
This function is called to lock the database when explicit lock command is
issued on a database.
|
int |
lockTable(Hive hiveDB,
LockTableDesc lockTbl)
This function is called to lock the table when explicit lock command is
issued on a table.
|
long |
openTxn(Context ctx,
String user)
Open a new transaction.
|
boolean |
recordSnapshot(QueryPlan queryPlan)
For resources that support MVCC, the state of the DB must be recorded for the duration of the
operation/transaction.
|
void |
releaseLocks(List<HiveLock> hiveLocks)
Release specified locks.
|
void |
replAllocateTableWriteIdsBatch(String dbName,
String tableName,
String replPolicy,
List<TxnToWriteId> srcTxnToWriteIdList)
Allocates write id for each transaction in the list.
|
void |
replCommitTxn(String replPolicy,
long srcTxnId)
Commit the transaction in target cluster.
|
List<Long> |
replOpenTxn(String replPolicy,
List<Long> srcTxnIds,
String user)
Open a new transaction in target cluster.
|
void |
replRollbackTxn(String replPolicy,
long srcTxnId)
Abort the transaction in target cluster.
|
void |
replTableWriteIdState(String validWriteIdList,
String dbName,
String tableName,
List<String> partNames)
Replicate Table Write Ids state to mark aborted write ids and writeid high water mark.
|
void |
rollbackTxn()
Abort the current transaction.
|
boolean |
supportsAcid()
Indicate whether this transaction manager supports ACID operations.
|
boolean |
supportsExplicitLock()
Indicate whether this lock manager supports the use of
lock
database or lock table . |
int |
unlockDatabase(Hive hiveDB,
UnlockDatabaseDesc unlockDb)
This function is called to unlock the database when explicit unlock command
is issued on a database.
|
int |
unlockTable(Hive hiveDB,
UnlockTableDesc unlockTbl)
This function is called to unlock the table when explicit unlock command is
issued on a table.
|
boolean |
useNewShowLocksFormat()
Indicate whether this transaction manager returns information about locks in the new format
for show locks or the old one.
|
long openTxn(Context ctx, String user) throws LockException
ctx
- Context for this queryuser
- Hive user who is opening this transaction.LockException
- if a transaction is already open.List<Long> replOpenTxn(String replPolicy, List<Long> srcTxnIds, String user) throws LockException
replPolicy
- Replication policy to uniquely identify the source cluster.srcTxnIds
- The ids of the transaction at the source clusteruser
- The user who has fired the repl load commandLockException
- in case of failure to start the transaction.void replCommitTxn(String replPolicy, long srcTxnId) throws LockException
replPolicy
- Replication policy to uniquely identify the source cluster.srcTxnId
- The id of the transaction at the source clusterLockException
- in case of failure to commit the transaction.void replRollbackTxn(String replPolicy, long srcTxnId) throws LockException
replPolicy
- Replication policy to uniquely identify the source cluster.srcTxnId
- The id of the transaction at the source clusterLockException
- in case of failure to abort the transaction.void replTableWriteIdState(String validWriteIdList, String dbName, String tableName, List<String> partNames) throws LockException
validWriteIdList
- Snapshot of writeid list when the table/partition is dumped.dbName
- Database nametableName
- Table which is written.partNames
- List of partitions being written.LockException
- in case of failure.HiveLockManager getLockManager() throws LockException
LockException
- if there is an issue obtaining the lock manager.void acquireLocks(QueryPlan plan, Context ctx, String username) throws LockException
openTxn(Context, String)
.
A list of acquired locks will be stored in the
Context
object and can be retrieved
via Context.getHiveLocks()
.plan
- query planctx
- Context for this queryusername
- name of the user for this queryLockException
- if there is an error getting the locks. Use HiveException.getCanonicalErrorMsg()
to get more info on how to handle the exception.void acquireLocks(QueryPlan plan, Context ctx, String username, Driver.LockedDriverState lDrvState) throws LockException
openTxn(Context, String)
.
A list of acquired locks will be stored in the
Context
object and can be retrieved
via Context.getHiveLocks()
.plan
- query planctx
- Context for this queryusername
- name of the user for this querylDrvState
- the state to inform if the query cancelled or notLockException
- if there is an error getting the locksvoid releaseLocks(List<HiveLock> hiveLocks) throws LockException
supportsAcid() == true
,
will track locks internally and ignore this parameterhiveLocks
- The list of locks to be released.LockException
void commitTxn() throws LockException
acquireLocks(org.apache.hadoop.hive.ql.QueryPlan,
org.apache.hadoop.hive.ql.Context, java.lang.String)
.LockException
- if there is no current transaction or the
transaction has already been committed or aborted.void rollbackTxn() throws LockException
acquireLocks(org.apache.hadoop.hive.ql.QueryPlan,
org.apache.hadoop.hive.ql.Context, java.lang.String)
.LockException
- if there is no current transaction or the
transaction has already been committed or aborted.void heartbeat() throws LockException
LockException
- If current transaction exists or the transaction
has already been committed or aborted.org.apache.hadoop.hive.common.ValidTxnList getValidTxns() throws LockException
ValidTxnList
object can be passed as string to the processing
tasks for use in the reading the data. This call should be made once up
front by the planner and should never be called on the backend,
as this will violate the isolation level semantics.LockException
org.apache.hadoop.hive.common.ValidTxnWriteIdList getValidWriteIds(List<String> tableList, String validTxnList) throws LockException
ValidTxnWriteIdList
object can be passed as string to the processing
tasks for use in the reading the data. This call will return same results as long as validTxnString
passed is same.tableList
- list of tables (validTxnList
- snapshot of valid txns for the current txnLockException
String getTxnManagerName()
void closeTxnManager()
boolean supportsExplicitLock()
lock
database
or lock table
.int lockTable(Hive hiveDB, LockTableDesc lockTbl) throws HiveException
hiveDB
- an object to communicate with the metastorelockTbl
- table locking info, such as table name, locking modeHiveException
int unlockTable(Hive hiveDB, UnlockTableDesc unlockTbl) throws HiveException
hiveDB
- an object to communicate with the metastoreunlockTbl
- table unlocking info, such as table nameHiveException
int lockDatabase(Hive hiveDB, LockDatabaseDesc lockDb) throws HiveException
hiveDB
- an object to communicate with the metastorelockDb
- database locking info, such as database name, locking modeHiveException
int unlockDatabase(Hive hiveDB, UnlockDatabaseDesc unlockDb) throws HiveException
hiveDB
- an object to communicate with the metastoreunlockDb
- database unlocking info, such as database nameHiveException
boolean useNewShowLocksFormat()
boolean supportsAcid()
boolean recordSnapshot(QueryPlan queryPlan)
true
if current statment needs to do this.boolean isImplicitTransactionOpen()
boolean isTxnOpen()
long getCurrentTxnId()
isTxnOpen()
, returns the currently active transaction ID.long getTableWriteId(String dbName, String tableName) throws LockException
isTxnOpen()
, returns the table write ID associated with current active transaction.LockException
void replAllocateTableWriteIdsBatch(String dbName, String tableName, String replPolicy, List<TxnToWriteId> srcTxnToWriteIdList) throws LockException
dbName
- database nametableName
- the name of the table to allocate the write idreplPolicy
- used by replication task to identify the source clustersrcTxnToWriteIdList
- List of txn id to write id MapLockException
int getStmtIdAndIncrement()
LockResponse acquireMaterializationRebuildLock(String dbName, String tableName, long txnId) throws LockException
LockException
Copyright © 2022 The Apache Software Foundation. All rights reserved.