HBASE-21553 schedLock not released in MasterProcedureScheduler
Signed-off-by: Andrew Purtell <apurtell@apache.org>
This commit is contained in:
parent
19c3663119
commit
bd33a1ef96
@ -743,9 +743,11 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
* @return true if we were able to acquire the lock on the table, otherwise false.
|
||||
*/
|
||||
public boolean tryAcquireTableExclusiveLock(final Procedure procedure, final TableName table) {
|
||||
try {
|
||||
schedLock.lock();
|
||||
TableQueue queue = getTableQueue(table);
|
||||
if (!queue.getNamespaceQueue().trySharedLock()) {
|
||||
schedLock.unlock();
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -768,6 +770,11 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
schedLock.unlock();
|
||||
}
|
||||
return hasXLock;
|
||||
} finally {
|
||||
if(schedLock.isHeldByCurrentThread()){
|
||||
schedLock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -776,6 +783,7 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
* @param table the name of the table that has the exclusive lock
|
||||
*/
|
||||
public void releaseTableExclusiveLock(final Procedure procedure, final TableName table) {
|
||||
try {
|
||||
schedLock.lock();
|
||||
TableQueue queue = getTableQueue(table);
|
||||
schedLock.unlock();
|
||||
@ -788,6 +796,11 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
queue.getNamespaceQueue().releaseSharedLock();
|
||||
addToRunQueue(tableRunQueue, queue);
|
||||
schedLock.unlock();
|
||||
} finally {
|
||||
if(schedLock.isHeldByCurrentThread()) {
|
||||
schedLock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -803,6 +816,7 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
|
||||
private TableQueue tryAcquireTableQueueSharedLock(final Procedure procedure,
|
||||
final TableName table) {
|
||||
try {
|
||||
schedLock.lock();
|
||||
TableQueue queue = getTableQueue(table);
|
||||
if (!queue.getNamespaceQueue().trySharedLock()) {
|
||||
@ -826,6 +840,11 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
return null;
|
||||
}
|
||||
return queue;
|
||||
} finally {
|
||||
if(schedLock.isHeldByCurrentThread()) {
|
||||
schedLock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -838,11 +857,16 @@ public class MasterProcedureScheduler implements ProcedureRunnableSet {
|
||||
|
||||
// Zk lock is expensive...
|
||||
queue.releaseZkSharedLock(lockManager);
|
||||
|
||||
try {
|
||||
schedLock.lock();
|
||||
queue.releaseSharedLock();
|
||||
queue.getNamespaceQueue().releaseSharedLock();
|
||||
schedLock.unlock();
|
||||
} finally {
|
||||
if(schedLock.isHeldByCurrentThread()) {
|
||||
schedLock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user