本文整理汇总了Java中com.netflix.astyanax.retry.BoundedExponentialBackoff类的典型用法代码示例。如果您正苦于以下问题:Java BoundedExponentialBackoff类的具体用法?Java BoundedExponentialBackoff怎么用?Java BoundedExponentialBackoff使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
BoundedExponentialBackoff类属于com.netflix.astyanax.retry包,在下文中一共展示了BoundedExponentialBackoff类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: atomicIncrement
import com.netflix.astyanax.retry.BoundedExponentialBackoff; //导入依赖的package包/类
public Deferred<Long> atomicIncrement(final AtomicIncrementRequest request) {
num_atomic_increments.incrementAndGet();
if (Bytes.memcmp(tsdb_uid_table, request.table) != 0) {
return Deferred.fromError(new UnsupportedOperationException(
"Increments are not supported on other tables yet"));
}
final Keyspace keyspace = getContext(request.table);
ColumnPrefixDistributedRowLock<byte[]> lock =
new ColumnPrefixDistributedRowLock<byte[]>(keyspace,
TSDB_UID_ID_CAS, request.key)
.withBackoff(new BoundedExponentialBackoff(250, 10000, 10))
.expireLockAfter(lock_timeout, TimeUnit.MILLISECONDS);
try {
num_row_locks.incrementAndGet();
final ColumnMap<String> columns = lock.acquireLockAndReadRow();
// Modify a value and add it to a batch mutation
final String qualifier = new String(request.qualifier());
long value = 1;
if (columns.get(qualifier) != null) {
value = columns.get(qualifier).getLongValue() + 1;
}
final MutationBatch mutation = keyspace.prepareMutationBatch();
mutation.setConsistencyLevel(ConsistencyLevel.CL_EACH_QUORUM);
mutation.withRow(TSDB_UID_ID_CAS, request.key)
.putColumn(qualifier, value, null);
lock.releaseWithMutation(mutation);
return Deferred.fromResult(value);
} catch (Exception e) {
try {
lock.release();
} catch (Exception e1) {
LOG.error("Error releasing lock post exception for request: " + request, e1);
}
return Deferred.fromError(e);
}
}