@Override public boolean afterUpdate(Object key, Object value, Object currentVersion, Object previousVersion, SoftLock lock) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(key); if (item != null && item.isUnlockable(lock)) { Lock lockItem = (Lock) item; if (lockItem.wasLockedConcurrently()) { decrementLock( key, lockItem ); return false; } else { region.put( key, new Item(value, currentVersion, region.nextTimestamp())); return true; } } else { handleLockExpiry( key, item ); return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterUpdate(SessionImplementor session, Object key, Object value, Object currentVersion, Object previousVersion, SoftLock lock) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item != null && item.isUnlockable(lock)) { Lock lockItem = (Lock) item; if (lockItem.wasLockedConcurrently()) { decrementLock(session, key, lockItem ); return false; } else { region.put(session, key, new Item(value, currentVersion, region.nextTimestamp())); return true; } } else { handleLockExpiry(session, key, item ); return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterUpdate(SharedSessionContractImplementor session, Object key, Object value, Object currentVersion, Object previousVersion, SoftLock lock) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item != null && item.isUnlockable(lock)) { Lock lockItem = (Lock) item; if (lockItem.wasLockedConcurrently()) { decrementLock(session, key, lockItem ); return false; } else { region.put(session, key, new Item(value, currentVersion, region.nextTimestamp())); return true; } } else { handleLockExpiry(session, key, item ); return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterUpdate(Object key, Object value, SoftLock lock) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(key); if (item != null && item.isUnlockable(lock)) { Lock lockItem = (Lock) item; if (lockItem.wasLockedConcurrently()) { decrementLock(key, lockItem); return false; } else { region.put(key, new Item(value, null, region.nextTimestamp())); return true; } } else { handleLockExpiry(key, item); return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterUpdate(SharedSessionContractImplementor session, Object key, Object value, SoftLock lock) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item != null && item.isUnlockable(lock)) { Lock lockItem = (Lock) item; if (lockItem.wasLockedConcurrently()) { decrementLock(session, key, lockItem); return false; } else { region.put(session, key, new Item(value, null, region.nextTimestamp())); return true; } } else { handleLockExpiry(session, key, item); return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterUpdate(SessionImplementor session, Object key, Object value, SoftLock lock) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item != null && item.isUnlockable(lock)) { Lock lockItem = (Lock) item; if (lockItem.wasLockedConcurrently()) { decrementLock(session, key, lockItem); return false; } else { region.put(session, key, new Item(value, null, region.nextTimestamp())); return true; } } else { handleLockExpiry(session, key, item); return false; } } finally { writeLock.unlock(); } }
@Override public boolean putFromLoad(SessionImplementor session, Object key, Object value, long txTimestamp, Object version, boolean minimalPutOverride) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); Comparator<Object> comparator = ((TransactionalDataRegion)region).getCacheDataDescription().getVersionComparator(); boolean writeable = item == null || item.isWriteable(txTimestamp, version, comparator); if (writeable) { region.put(session, key, new Item(value, version, region.nextTimestamp())); return true; } return false; } finally { writeLock.unlock(); } }
@Override public boolean putFromLoad(Object key, Object value, long txTimestamp, Object version, boolean minimalPutOverride) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(key); Comparator<Object> comparator = ((TransactionalDataRegion)region).getCacheDataDescription().getVersionComparator(); boolean writeable = item == null || item.isWriteable(txTimestamp, version, comparator); if (writeable) { region.put(key, new Item(value, version, region.nextTimestamp())); return true; } return false; } finally { writeLock.unlock(); } }
@Override public boolean afterInsert(Object key, Object value, Object version) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(key); if (item == null) { region.put(key, new Item(value, version, region.nextTimestamp())); return true; } else { return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterInsert(Object key, Object value) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(key); if (item == null) { region.put(key, new Item(value, null, region.nextTimestamp())); return true; } else { return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterInsert(SharedSessionContractImplementor session, Object key, Object value) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item == null) { region.put(session, key, new Item(value, null, region.nextTimestamp())); return true; } else { return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterInsert(SessionImplementor session, Object key, Object value) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item == null) { region.put(session, key, new Item(value, null, region.nextTimestamp())); return true; } else { return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterInsert(SessionImplementor session, Object key, Object value, Object version) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item == null) { region.put(session, key, new Item(value, version, region.nextTimestamp())); return true; } else { return false; } } finally { writeLock.unlock(); } }
@Override public boolean afterInsert(SharedSessionContractImplementor session, Object key, Object value, Object version) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); if (item == null) { region.put(session, key, new Item(value, version, region.nextTimestamp())); return true; } else { return false; } } finally { writeLock.unlock(); } }
@Override public boolean putFromLoad(SharedSessionContractImplementor session, Object key, Object value, long txTimestamp, Object version, boolean minimalPutOverride) throws CacheException { RLock writeLock = mapCache.getReadWriteLock(key).writeLock(); writeLock.lock(); try { Lockable item = (Lockable) region.get(session, key); Comparator<Object> comparator = ((TransactionalDataRegion)region).getCacheDataDescription().getVersionComparator(); boolean writeable = item == null || item.isWriteable(txTimestamp, version, comparator); if (writeable) { region.put(session, key, new Item(value, version, region.nextTimestamp())); return true; } return false; } finally { writeLock.unlock(); } }