public ConsistentKeyLocker build() { preBuild(); final LockCleanerService cleaner; switch (cleanerConfig) { case STANDARD: Preconditions.checkArgument(null == customCleanerService); cleaner = new StandardLockCleanerService(store, serializer, times); break; case CUSTOM: Preconditions.checkArgument(null != customCleanerService); cleaner = customCleanerService; break; default: cleaner = null; } return new ConsistentKeyLocker(store, manager, rid, times, serializer, llm, lockWait, lockRetryCount, lockExpire, lockState, cleaner); }
List<Entry> claimEntries = getSliceWithRetries(ksq, tx); checkSeniority(kc, ls, unexpiredTRs); ls.setChecked();
WriteResult wr = tryWriteLockOnce(lockKey, oldLockCol, txh); if (wr.isSuccessful() && wr.getDuration().compareTo(lockWait) <= 0) { final Instant writeInstant = wr.getWriteTimestamp(); handleMutationFailure(lockID, lockKey, wr, txh); tryDeleteLockOnce(lockKey, oldLockCol, txh);
@Override protected void deleteSingleLock(KeyColumn kc, ConsistentKeyLockStatus ls, StoreTransaction tx) { List<StaticBuffer> dels = ImmutableList.of(serializer.toLockCol(ls.getWriteTimestamp(), rid, times)); for (int i = 0; i < lockRetryCount; i++) { try { StoreTransaction newTx = overrideTimestamp(tx, times.getTime()); store.mutate(serializer.toLockKey(kc.getKey(), kc.getColumn()), ImmutableList.<Entry>of(), dels, newTx); return; } catch (TemporaryBackendException e) { log.warn("Temporary storage exception while deleting lock", e); // don't return -- iterate and retry } catch (BackendException e) { log.error("Storage exception while deleting lock", e); return; // give up on this lock } } }
WriteResult dwr = tryDeleteLockOnce(lockKey, wr.getLockCol(), txh); if (!dwr.isSuccessful()) { log.warn("Failed to delete lock write: abandoning potentially-unreleased lock on " + lockID, dwr.getThrowable());
private WriteResult tryDeleteLockOnce(StaticBuffer key, StaticBuffer col, StoreTransaction txh) { Throwable t = null; final Timer delTimer = times.getTimer().start(); try { StoreTransaction newTx = overrideTimestamp(txh, delTimer.getStartTime()); store.mutate(key, ImmutableList.<Entry>of(), Arrays.asList(col), newTx); } catch (BackendException e) { t = e; } delTimer.stop(); return new WriteResult(delTimer.elapsed(), delTimer.getStartTime(), null, t); }
WriteResult dwr = tryDeleteLockOnce(lockKey, wr.getLockCol(), txh); if (!dwr.isSuccessful()) { log.warn("Failed to delete lock write: abandoning potentially-unreleased lock on " + lockID, dwr.getThrowable());
WriteResult wr = tryWriteLockOnce(lockKey, oldLockCol, txh); if (wr.isSuccessful() && wr.getDuration().compareTo(lockWait) <= 0) { final Instant writeInstant = wr.getWriteTimestamp(); handleMutationFailure(lockID, lockKey, wr, txh); tryDeleteLockOnce(lockKey, oldLockCol, txh);
List<Entry> claimEntries = getSliceWithRetries(ksq, tx); checkSeniority(kc, ls, unexpiredTRs); ls.setChecked();
private WriteResult tryWriteLockOnce(StaticBuffer key, StaticBuffer del, StoreTransaction txh) { Throwable t = null; final Timer writeTimer = times.getTimer().start(); StaticBuffer newLockCol = serializer.toLockCol(writeTimer.getStartTime(), rid, times); Entry newLockEntry = StaticArrayEntry.of(newLockCol, zeroBuf); try { StoreTransaction newTx = overrideTimestamp(txh, writeTimer.getStartTime()); store.mutate(key, Arrays.asList(newLockEntry), null == del ? KeyColumnValueStore.NO_DELETIONS : Arrays.asList(del), newTx); } catch (BackendException e) { log.debug("Lock write attempt failed with exception", e); t = e; } writeTimer.stop(); return new WriteResult(writeTimer.elapsed(), writeTimer.getStartTime(), newLockCol, t); }
public ConsistentKeyLocker build() { preBuild(); final LockCleanerService cleaner; switch (cleanerConfig) { case STANDARD: Preconditions.checkArgument(null == customCleanerService); cleaner = new StandardLockCleanerService(store, serializer); break; case CUSTOM: Preconditions.checkArgument(null != customCleanerService); cleaner = customCleanerService; break; default: cleaner = null; } return new ConsistentKeyLocker(store, manager, rid, times, serializer, llm, lockWait, lockRetryCount, lockExpire, lockState, cleaner); }
WriteResult dwr = tryDeleteLockOnce(lockKey, wr.getLockCol(), txh); if (!dwr.isSuccessful()) { log.warn("Failed to delete lock write: abandoning potentially-unreleased lock on " + lockID, dwr.getThrowable());
WriteResult wr = tryWriteLockOnce(lockKey, oldLockCol, txh); if (wr.isSuccessful() && wr.getDuration().compareTo(lockWait) <= 0) { final Timepoint writeInstant = wr.getWriteTimestamp(); handleMutationFailure(lockID, lockKey, wr, txh); tryDeleteLockOnce(lockKey, oldLockCol, txh);
List<Entry> claimEntries = getSliceWithRetries(ksq, tx); checkSeniority(kc, ls, unexpiredTRs); ls.setChecked();
@Override protected void deleteSingleLock(KeyColumn kc, ConsistentKeyLockStatus ls, StoreTransaction tx) { List<StaticBuffer> dels = ImmutableList.of(serializer.toLockCol(ls.getWriteTimestamp(), rid, times)); for (int i = 0; i < lockRetryCount; i++) { try { StoreTransaction newTx = overrideTimestamp(tx, times.getTime()); store.mutate(serializer.toLockKey(kc.getKey(), kc.getColumn()), ImmutableList.<Entry>of(), dels, newTx); return; } catch (TemporaryBackendException e) { log.warn("Temporary storage exception while deleting lock", e); // don't return -- iterate and retry } catch (BackendException e) { log.error("Storage exception while deleting lock", e); return; // give up on this lock } } }
public ConsistentKeyLocker build() { preBuild(); final LockCleanerService cleaner; switch (cleanerConfig) { case STANDARD: Preconditions.checkArgument(null == customCleanerService); cleaner = new StandardLockCleanerService(store, serializer, times); break; case CUSTOM: Preconditions.checkArgument(null != customCleanerService); cleaner = customCleanerService; break; default: cleaner = null; } return new ConsistentKeyLocker(store, manager, rid, times, serializer, llm, lockWait, lockRetryCount, lockExpire, lockState, cleaner); }
@Override protected void deleteSingleLock(KeyColumn kc, ConsistentKeyLockStatus ls, StoreTransaction tx) { List<StaticBuffer> dels = ImmutableList.of(serializer.toLockCol(ls.getWriteTimestamp(timeUnit), rid)); for (int i = 0; i < lockRetryCount; i++) { try { StoreTransaction newTx = overrideTimestamp(tx, times.getTime()); store.mutate(serializer.toLockKey(kc.getKey(), kc.getColumn()), ImmutableList.<Entry>of(), dels, newTx); return; } catch (TemporaryBackendException e) { log.warn("Temporary storage exception while deleting lock", e); // don't return -- iterate and retry } catch (BackendException e) { log.error("Storage exception while deleting lock", e); return; // give up on this lock } } }
private WriteResult tryDeleteLockOnce(StaticBuffer key, StaticBuffer col, StoreTransaction txh) { Throwable t = null; final Timer delTimer = times.getTimer().start(); try { StoreTransaction newTx = overrideTimestamp(txh, delTimer.getStartTime()); store.mutate(key, ImmutableList.<Entry>of(), Arrays.asList(col), newTx); } catch (BackendException e) { t = e; } delTimer.stop(); return new WriteResult(delTimer.elapsed(), delTimer.getStartTime(), null, t); }
private WriteResult tryDeleteLockOnce(StaticBuffer key, StaticBuffer col, StoreTransaction txh) { Throwable t = null; final Timer delTimer = times.getTimer().start(); try { StoreTransaction newTx = overrideTimestamp(txh, delTimer.getStartTime()); store.mutate(key, ImmutableList.<Entry>of(), Arrays.asList(col), newTx); } catch (BackendException e) { t = e; } delTimer.stop(); return new WriteResult(delTimer.elapsed(), delTimer.getStartTime(), null, t); }
private WriteResult tryWriteLockOnce(StaticBuffer key, StaticBuffer del, StoreTransaction txh) { Throwable t = null; final Timer writeTimer = times.getTimer().start(); StaticBuffer newLockCol = serializer.toLockCol(writeTimer.getStartTime(), rid, times); Entry newLockEntry = StaticArrayEntry.of(newLockCol, zeroBuf); try { StoreTransaction newTx = overrideTimestamp(txh, writeTimer.getStartTime()); store.mutate(key, Arrays.asList(newLockEntry), null == del ? KeyColumnValueStore.NO_DELETIONS : Arrays.asList(del), newTx); } catch (BackendException e) { log.debug("Lock write attempt failed with exception", e); t = e; } writeTimer.stop(); return new WriteResult(writeTimer.elapsed(), writeTimer.getStartTime(), newLockCol, t); }