itemLock.synchronize(hashId, lock -> { StateRecord newRecord = ledger.findOrCreate(hashId); newRecord.setState(committingState)
r.setState(ItemState.PENDING); try { itemLock.synchronize(r.getId(), lock -> { r.save(); synchronized (cache) {
itemLock.synchronize(record.getId(), lock -> { record.save(); synchronized (cache) { itemLock.synchronize(record.getId(), lock -> { record.destroy(); return null;
@Test @Ignore("in the sequence causes SIGSEGV in java machine in sqlite module") public void lock() throws Exception { for( int z=0; z<10; z++ ) { HashId id = HashId.createRandom(); count = 0; ItemLock il = new ItemLock(); il.synchronize(id, (__) -> count++); il.synchronize(id, (__) -> count++); il.synchronize(id, (__) -> count++); assertEquals(3, count); assertEquals(1, il.size()); id = null; for (int i = 0; i < 10; i++) { System.gc(); System.runFinalization(); if (il.size() == 0) break; Thread.sleep(100); } assertEquals(0, il.size()); } }
itemLock.synchronize(revokingItem.getId(), lock -> { StateRecord r = record.lockToRevoke(revokingItem.getId()); if (r == null) {
setState(ItemState.UNDEFINED); try { itemLock.synchronize(record.getId(), lock -> { record.destroy();
if (r.getLockedByRecordId() == record.getRecordId()) { try { itemLock.synchronize(r.getId(), lock -> { if (record.getState() == ItemState.APPROVED) {
for (StateRecord r : lockedToRevoke) { try { itemLock.synchronize(r.getId(), lock -> { r.unlock().save(); synchronized (cache) { itemLock.synchronize(r.getId(), lock -> { r.unlock().save(); synchronized (cache) {
itemLock.synchronize(newItem.getId(), lock -> { StateRecord r = record.createOutputLockRecord(newItem.getId()); if (r == null) {
return itemLock.synchronize(itemId, (lock) -> { ItemProcessor ip = processors.get(itemId); if (ip != null) {
itemLock.synchronize(revokingItem.getId(), lock -> { StateRecord r = ledger.findOrCreate(revokingItem.getId()); r.setState(ItemState.REVOKED); itemLock.synchronize(newItem.getId(), lock -> { StateRecord r = ledger.findOrCreate(newItem.getId()); r.setState(ItemState.APPROVED);