@Override public T2<GridCacheLockEx, AtomicDataStructureValue> get(GridCacheInternalKey key, AtomicDataStructureValue val, IgniteInternalCache cache) throws IgniteCheckedException { // Check that reentrant lock hasn't been created in other thread yet. GridCacheLockEx reentrantLock = cast(dsMap.get(key), GridCacheLockEx.class); if (reentrantLock != null) { assert val != null; return new T2<>(reentrantLock, null); } if (val == null && !create) return new T2<>(null, null); AtomicDataStructureValue retVal = (val == null ? new GridCacheLockState(0, ctx.localNodeId(), 0, failoverSafe, fair, ctx.discovery().gridStartTime()) : null); GridCacheLockEx reentrantLock0 = new GridCacheLockImpl(name, key, cache); return new T2<>(reentrantLock0, retVal); } }, cfg, name, REENTRANT_LOCK, create, GridCacheLockEx.class);
@Override public T2<GridCacheLockEx, AtomicDataStructureValue> get(GridCacheInternalKey key, AtomicDataStructureValue val, IgniteInternalCache cache) throws IgniteCheckedException { // Check that reentrant lock hasn't been created in other thread yet. GridCacheLockEx reentrantLock = cast(dsMap.get(key), GridCacheLockEx.class); if (reentrantLock != null) { assert val != null; return new T2<>(reentrantLock, null); } if (val == null && !create) return new T2<>(null, null); AtomicDataStructureValue retVal = (val == null ? new GridCacheLockState(0, ctx.localNodeId(), 0, failoverSafe, fair, ctx.discovery().gridStartTime()) : null); GridCacheLockEx reentrantLock0 = new GridCacheLockImpl(name, key, cache); return new T2<>(reentrantLock0, retVal); } }, cfg, name, REENTRANT_LOCK, create, GridCacheLockEx.class);