public static <K> void assertReadWriteViewEmpty(K k, ReadWriteEntryView<K, ?> rw) { assertEquals(k, rw.key()); assertFalse(rw.find().isPresent()); }
@Override public Boolean apply(EntryView.ReadWriteEntryView<ClusteredLockKey, ClusteredLockValue> entryView) { ClusteredLockValue lock = entryView.find().orElseThrow(() -> log.lockDeleted()); if (trace) { log.tracef("LOCK[%s] lock request by reqId %s requestor %s", entryView.key().getName(), requestId, requestor); } if (lock.getState() == ClusteredLockState.RELEASED) { entryView.set(new ClusteredLockValue(requestId, requestor, ClusteredLockState.ACQUIRED)); if (trace) { log.tracef("LOCK[%s] lock acquired by %s %s", entryView.key().getName(), requestId, requestor); } return Boolean.TRUE; } else if (lock.getState() == ClusteredLockState.ACQUIRED && lock.getRequestId().equals(requestId) && lock.getOwner().equals(requestor)) { log.tracef("LOCK[%s] lock already acquired by %s %s", entryView.key().getName(), requestId, requestor); return Boolean.TRUE; } if (trace) { log.tracef("LOCK[%s] lock not available, owned by %s %s", entryView.key().getName(), lock.getRequestId(), lock.getOwner()); } return Boolean.FALSE; }
public static <K, V> void assertReadWriteViewEquals(K k, V expected, ReadWriteEntryView<K, V> rw) { assertEquals(k, rw.key()); assertTrue(rw.find().isPresent()); assertEquals(expected, rw.find().get()); assertEquals(expected, rw.get()); try { rw.set(null); fail("Expected IllegalStateException since entry view cannot be modified outside lambda"); } catch (IllegalStateException e) { // Expected } }
@Override public Boolean apply(EntryView.ReadWriteEntryView<ClusteredLockKey, ClusteredLockValue> entryView) { if (trace) { log.tracef("Lock[%s] unlock request by reqId [%s] requestors %s", entryView.key().getName(), requestId, requestors); log.tracef("Lock[%s] Already free. State[RELEASED], reqId [%s], owner [%s]", entryView.key().getName(), lockValue.getRequestId(), lockValue.getOwner()); log.tracef("Lock[%s] Unlocked by reqId [%s] requestors %s", entryView.key().getName(), requestId, requestors); entryView.key().getName(), requestId, requestors,
@Override public K getKey() { return entryView.key(); }
@Override public K getKey() { return rw.key(); }
@Override public K getKey() { return entryView.key(); }
@Override public EntryProcessorResultWithKey<K, T> apply(ReadWriteEntryView<K, V> rw) { T res = entryProcessor.process(new ReadWriteMutableEntry<>(rw), arguments); return new EntryProcessorResultWithKey<>(rw.key(), res); }