return null; AtomicDataStructureValue retVal = (val == null ? new GridCacheSemaphoreState(cnt, new HashMap<UUID, Integer>(), failoverSafe, ctx.discovery().gridStartTime()) : null); Map<UUID,Integer> waiters = semState.getWaiters(); Integer permit = ((GridCacheSemaphoreState) val).getCount(); semState.setWaiters(waiters); semState.setCount(permit);
if( val.isBroken()) { tx.rollback(); val.setBroken(true); Map<UUID, Integer> map = val.getWaiters(); val.setCount(val.getCount() + numPermits); val.setWaiters(map);
@Override public Sync call() throws Exception { try (GridNearTxLocal tx = CU.txStartInternal(ctx, cacheView, PESSIMISTIC, REPEATABLE_READ)) { GridCacheSemaphoreState val = cacheView.get(key); if (val == null) { if (log.isDebugEnabled()) log.debug("Failed to find semaphore with given name: " + name); return null; } final int cnt = val.getCount(); Map<UUID, Integer> waiters = val.getWaiters(); final boolean failoverSafe = val.isFailoverSafe(); tx.commit(); Sync sync = new Sync(cnt, waiters, failoverSafe); sync.setBroken(val.isBroken()); return sync; } } });
/** {@inheritDoc} */ @Override public void onUpdate(GridCacheSemaphoreState val) { if (sync == null) return; // Update broken flag. sync.setBroken(val.isBroken()); // Update permission count. sync.setPermits(val.getCount()); // Update waiters' counts. sync.setWaiters(val.getWaiters()); // Try to notify any waiting threads. sync.releaseShared(0); }
@Override public boolean applyx(AtomicDataStructureValue val) throws IgniteCheckedException { assert val != null && val instanceof GridCacheSemaphoreState; GridCacheSemaphoreState semVal = (GridCacheSemaphoreState) val; if (semVal.getCount() < 0) throw new IgniteCheckedException("Failed to remove semaphore with blocked threads. "); return true; } }, name, grpName, SEMAPHORE, null);
/** {@inheritDoc} */ @Override public void onUpdate(GridCacheSemaphoreState val) { if (sync == null) return; // Update broken flag. sync.setBroken(val.isBroken()); // Update permission count. sync.setPermits(val.getCount()); // Update waiters' counts. sync.setWaiters(val.getWaiters()); // Try to notify any waiting threads. sync.releaseShared(0); }
@Override public Integer call() throws Exception { try ( GridNearTxLocal tx = CU.txStartInternal(ctx, cacheView, PESSIMISTIC, REPEATABLE_READ) ) { GridCacheSemaphoreState val = cacheView.get(key); if (val == null) throw new IgniteException("Failed to find semaphore with given name: " + name); int cnt = val.getCount(); tx.rollback(); return cnt; } } });
if (val.isBroken()) { tx.rollback(); boolean retVal = val.getCount() == expVal; UUID nodeID = ctx.localNodeId(); Map<UUID, Integer> map = val.getWaiters(); val.setWaiters(map); val.setCount(newVal);
return null; AtomicDataStructureValue retVal = (val == null ? new GridCacheSemaphoreState(cnt, new HashMap<UUID, Integer>(), failoverSafe, ctx.discovery().gridStartTime()) : null); Map<UUID,Integer> waiters = semState.getWaiters(); Integer permit = ((GridCacheSemaphoreState) val).getCount(); semState.setWaiters(waiters); semState.setCount(permit);
@Override public Sync call() throws Exception { try (GridNearTxLocal tx = CU.txStartInternal(ctx, cacheView, PESSIMISTIC, REPEATABLE_READ)) { GridCacheSemaphoreState val = cacheView.get(key); if (val == null) { if (log.isDebugEnabled()) log.debug("Failed to find semaphore with given name: " + name); return null; } final int cnt = val.getCount(); Map<UUID, Integer> waiters = val.getWaiters(); final boolean failoverSafe = val.isFailoverSafe(); tx.commit(); Sync sync = new Sync(cnt, waiters, failoverSafe); sync.setBroken(val.isBroken()); return sync; } } });
@Override public boolean applyx(AtomicDataStructureValue val) throws IgniteCheckedException { assert val != null && val instanceof GridCacheSemaphoreState; GridCacheSemaphoreState semVal = (GridCacheSemaphoreState) val; if (semVal.getCount() < 0) throw new IgniteCheckedException("Failed to remove semaphore with blocked threads. "); return true; } }, name, grpName, SEMAPHORE, null);
if( val.isBroken()) { tx.rollback(); val.setBroken(true); Map<UUID, Integer> map = val.getWaiters(); val.setCount(val.getCount() + numPermits); val.setWaiters(map);
@Override public Integer call() throws Exception { try ( GridNearTxLocal tx = CU.txStartInternal(ctx, cacheView, PESSIMISTIC, REPEATABLE_READ) ) { GridCacheSemaphoreState val = cacheView.get(key); if (val == null) throw new IgniteException("Failed to find semaphore with given name: " + name); int cnt = val.getCount(); tx.rollback(); return cnt; } } });
if (val.isBroken()) { tx.rollback(); boolean retVal = val.getCount() == expVal; UUID nodeID = ctx.localNodeId(); Map<UUID, Integer> map = val.getWaiters(); val.setWaiters(map); val.setCount(newVal);