--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableLockManager.java @@ -101,12 +101,29 @@ public abstract class TableLockManager { public abstract TableLock writeLock(byte[] tableName, String purpose); /** + * Returns a TableLock for locking the table for exclusive access + * @param tableName Table to lock + * @param purpose Human readable reason for locking the table + * @param lock timeout + * @return A new TableLock object for acquiring a write lock + */ + public abstract TableLock writeLock(byte[] tableName, String purpose, long timeout); + + /** * Returns a TableLock for locking the table for shared access among read-lock holders * @param tableName Table to lock * @param purpose Human readable reason for locking the table * @return A new TableLock object for acquiring a read lock */ public abstract TableLock readLock(byte[] tableName, String purpose); + /** + * Returns a TableLock for locking the table for shared access among read-lock holders + * @param tableName Table to lock + * @param purpose Human readable reason for locking the table + * @param lock timeout + * @return A new TableLock object for acquiring a read lock + */ + public abstract TableLock readLock(byte[] tableName, String purpose, long timeout); /** * Force releases all table write locks and lock attempts even if this thread does @@ -163,10 +180,18 @@ public abstract class TableLockManager { return new NullTableLock(); } @Override + public TableLock writeLock(byte[] tableName, String purpose, long timeout) { + return new NullTableLock(); + } + @Override public TableLock readLock(byte[] tableName, String purpose) { return new NullTableLock(); } @Override + public TableLock readLock(byte[] tableName, String purpose, long timeout) { + return new NullTableLock(); + } + @Override public void reapAllTableWriteLocks() throws IOException { } @Override @@ -334,11 +359,24 @@ public abstract class TableLockManager { return new TableLockImpl(tableName, zkWatcher, serverName, writeLockTimeoutMs, false, purpose); } + + @Override + public TableLock writeLock(byte[] tableName, String purpose, long timeout) { + return new TableLockImpl(tableName, zkWatcher, + serverName, timeout, false, purpose); + } + @Override public TableLock readLock(byte[] tableName, String purpose) { return new TableLockImpl(tableName, zkWatcher, serverName, readLockTimeoutMs, true, purpose); } + + @Override + public TableLock readLock(byte[] tableName, String purpose, long timeout) { + return new TableLockImpl(tableName, zkWatcher, + serverName, timeout, true, purpose); + } @Override public void reapAllTableWriteLocks() throws IOException {