public class OneStepDistributedRowLock<K,C> extends java.lang.Object implements DistributedRowLock
| Modifier and Type | Field and Description |
|---|---|
static java.util.concurrent.TimeUnit |
DEFAULT_OPERATION_TIMEOUT_UNITS |
static int |
LOCK_TIMEOUT |
| Constructor and Description |
|---|
OneStepDistributedRowLock(com.netflix.astyanax.Keyspace keyspace,
com.netflix.astyanax.model.ColumnFamily<K,C> columnFamily,
K key) |
| Modifier and Type | Method and Description |
|---|---|
void |
acquire()
Try to take the lock.
|
com.netflix.astyanax.model.ColumnMap<C> |
acquireLockAndReadRow()
Take the lock and return the row data columns.
|
OneStepDistributedRowLock<K,C> |
expireLockAfter(long timeout,
java.util.concurrent.TimeUnit unit)
Time for failed locks.
|
OneStepDistributedRowLock<K,C> |
failOnStaleLock(boolean failOnStaleLock)
When set to true the operation will fail if a stale lock is detected
|
C |
fillLockMutation(com.netflix.astyanax.MutationBatch m,
java.lang.Long time,
java.lang.Integer ttl)
Fill a mutation with the lock column.
|
void |
fillReleaseMutation(com.netflix.astyanax.MutationBatch m,
boolean excludeCurrentLock)
Fill a mutation that will release the locks.
|
com.netflix.astyanax.model.ConsistencyLevel |
getConsistencyLevel() |
com.netflix.astyanax.model.ColumnMap<C> |
getDataColumns() |
K |
getKey() |
com.netflix.astyanax.Keyspace |
getKeyspace() |
C |
getLockColumn() |
int |
getRetryCount() |
java.util.Map<C,java.lang.Long> |
readLockColumns()
Return a mapping of existing lock columns and their expiration times
|
long |
readTimeoutValue(com.netflix.astyanax.model.Column<?> column)
Read the expiration time from the column value
|
void |
release()
Release the lock by releasing this and any other stale lock columns
|
java.util.Map<C,java.lang.Long> |
releaseAllLocks()
Release all locks.
|
java.util.Map<C,java.lang.Long> |
releaseExpiredLocks()
Release all expired locks for this key.
|
java.util.Map<C,java.lang.Long> |
releaseLocks(boolean force)
Delete locks columns.
|
void |
releaseWithMutation(com.netflix.astyanax.MutationBatch m)
Release using the provided mutation.
|
boolean |
releaseWithMutation(com.netflix.astyanax.MutationBatch m,
boolean force) |
void |
verifyLock(long curTimeInMicros)
Verify that the lock was acquired.
|
OneStepDistributedRowLock<K,C> |
withBackoff(com.netflix.astyanax.retry.RetryPolicy policy) |
OneStepDistributedRowLock<K,C> |
withColumnStrategy(LockColumnStrategy<C> columnStrategy) |
OneStepDistributedRowLock<K,C> |
withConsistencyLevel(com.netflix.astyanax.model.ConsistencyLevel consistencyLevel)
Modify the consistency level being used.
|
OneStepDistributedRowLock<K,C> |
withDataColumns(boolean flag)
If true the first read will also fetch all the columns in the row as
opposed to just the lock columns.
|
OneStepDistributedRowLock<K,C> |
withTtl(java.lang.Integer ttl)
This is the TTL on the lock column being written, as opposed to expireLockAfter which
is written as the lock column value.
|
OneStepDistributedRowLock<K,C> |
withTtl(java.lang.Integer ttl,
java.util.concurrent.TimeUnit units) |
public static final int LOCK_TIMEOUT
public static final java.util.concurrent.TimeUnit DEFAULT_OPERATION_TIMEOUT_UNITS
public OneStepDistributedRowLock<K,C> withColumnStrategy(LockColumnStrategy<C> columnStrategy)
public OneStepDistributedRowLock<K,C> withConsistencyLevel(com.netflix.astyanax.model.ConsistencyLevel consistencyLevel)
consistencyLevel - public OneStepDistributedRowLock<K,C> withDataColumns(boolean flag)
flag - public OneStepDistributedRowLock<K,C> failOnStaleLock(boolean failOnStaleLock)
failOnStaleLock - public OneStepDistributedRowLock<K,C> expireLockAfter(long timeout, java.util.concurrent.TimeUnit unit)
timeout - unit - public OneStepDistributedRowLock<K,C> withTtl(java.lang.Integer ttl)
ttl - public OneStepDistributedRowLock<K,C> withTtl(java.lang.Integer ttl, java.util.concurrent.TimeUnit units)
public OneStepDistributedRowLock<K,C> withBackoff(com.netflix.astyanax.retry.RetryPolicy policy)
public void acquire()
throws java.lang.Exception
acquire in interface DistributedRowLockjava.lang.Exceptionpublic com.netflix.astyanax.model.ColumnMap<C> acquireLockAndReadRow() throws java.lang.Exception
java.lang.Exceptionpublic void verifyLock(long curTimeInMicros)
throws java.lang.Exception,
BusyLockException,
StaleLockException
curTimeInMicros - BusyLockExceptionjava.lang.ExceptionStaleLockExceptionpublic void release()
throws java.lang.Exception
release in interface DistributedRowLockjava.lang.Exceptionpublic void releaseWithMutation(com.netflix.astyanax.MutationBatch m)
throws java.lang.Exception
m - java.lang.Exceptionpublic boolean releaseWithMutation(com.netflix.astyanax.MutationBatch m,
boolean force)
throws java.lang.Exception
java.lang.Exceptionpublic java.util.Map<C,java.lang.Long> readLockColumns() throws java.lang.Exception
java.lang.Exceptionpublic java.util.Map<C,java.lang.Long> releaseAllLocks() throws java.lang.Exception
java.lang.Exceptionpublic java.util.Map<C,java.lang.Long> releaseExpiredLocks() throws java.lang.Exception
java.lang.Exceptionpublic java.util.Map<C,java.lang.Long> releaseLocks(boolean force) throws java.lang.Exception
force - - Force delete of non expired locks as welljava.lang.Exceptionpublic C fillLockMutation(com.netflix.astyanax.MutationBatch m, java.lang.Long time, java.lang.Integer ttl)
m - time - ttl - public long readTimeoutValue(com.netflix.astyanax.model.Column<?> column)
column - public void fillReleaseMutation(com.netflix.astyanax.MutationBatch m,
boolean excludeCurrentLock)
m - public com.netflix.astyanax.model.ColumnMap<C> getDataColumns()
public K getKey()
public com.netflix.astyanax.Keyspace getKeyspace()
public com.netflix.astyanax.model.ConsistencyLevel getConsistencyLevel()
public C getLockColumn()
public int getRetryCount()