/** * @param key Key to check. * @param topVer Topology version. * @return {@code true} if given key belongs to local node. */ public boolean keyLocalNode(Object key, AffinityTopologyVersion topVer) { return partitionLocalNode(partition(key), topVer); }
/** * @param key Key. * @return Partition. */ public int partition(Object key) { return partition(key, true); }
/** {@inheritDoc} */ @Override public boolean isPrimaryOrBackup(ClusterNode n, K key) { A.notNull(n, "n", key, "key"); return cctx.affinity().partitionBelongs(n, cctx.affinity().partition(key), topologyVersion()); }
/** * @param key Key to check. * @param topVer Topology version. * @return Primary node for given key. */ @Nullable public ClusterNode primaryByKey(Object key, AffinityTopologyVersion topVer) { return primaryByPartition(partition(key), topVer); }
/** * Apply filter. * * @param key Key. * @return {@code True} if passed. */ public boolean apply(Object key) { int part = aff.partition(key); return applyPartition(part); }
/** {@inheritDoc} */ @Override public int partition() { return cctx.affinity().partition(key); } }
/** * @param key Key. * @param topVer Topology version. * @return Affinity nodes. */ public List<ClusterNode> nodesByKey(Object key, AffinityTopologyVersion topVer) { return nodesByPartition(partition(key), topVer); }
/** * @param ctx Cache context. * @param key Cache key. */ public GridNearCacheEntry( GridCacheContext ctx, KeyCacheObject key ) { super(ctx, key); part = ctx.affinity().partition(key); }
/** * @param key Key to check. * @param topVer Topology version. * @return Backup nodes. */ public Collection<ClusterNode> backupsByKey(Object key, AffinityTopologyVersion topVer) { return backupsByPartition(partition(key), topVer); }
/** {@inheritDoc} */ @Override public int partition(K key) { A.notNull(key, "key"); return cctx.affinity().partition(key); }
/** {@inheritDoc} */ @Override public void invalidPartition(int part) { if (entry != null && entry.context().affinity().partition(entry.key()) == part) entry = null; }
/** * @param ctx Cache context. * @param topVer Topology version at the time of creation (if negative, then latest topology is assumed). * @param key Cache key. */ public GridDhtCacheEntry( GridCacheContext ctx, AffinityTopologyVersion topVer, KeyCacheObject key ) { super(ctx, key); // Record this entry with partition. int p = cctx.affinity().partition(key); locPart = ctx.topology().localPartition(p, topVer, true, true); assert locPart != null : p; }
/** * @param cctx Cache context. * @param key Key. * @return Data store. */ @Nullable private CacheDataStore dataStore(GridCacheContext cctx, KeyCacheObject key) { if (grp.isLocal()) return locCacheDataStore; GridDhtLocalPartition part = grp.topology().localPartition(cctx.affinity().partition(key), null, false); return part != null ? dataStore(part) : null; }
/** */ private static Optional<IgniteCacheOffheapManager.CacheDataStore> dataStore( GridCacheContext<?, ?> cctx, Object key) { int p = cctx.affinity().partition(key); IgniteCacheOffheapManager offheap = cctx.offheap(); return StreamSupport.stream(offheap.cacheDataStores().spliterator(), false) .filter(ds -> ds.partId() == p) .findFirst(); } }
/** */ private static Optional<IgniteCacheOffheapManager.CacheDataStore> dataStore( GridCacheContext<?, ?> cctx, Object key) { int p = cctx.affinity().partition(key); return StreamSupport.stream(cctx.offheap().cacheDataStores().spliterator(), false) .filter(ds -> ds.partId() == p) .findFirst(); } }
/** */ private static Optional<IgniteCacheOffheapManager.CacheDataStore> dataStore( GridCacheContext<?, ?> cctx, Object key) { int p = cctx.affinity().partition(key); return StreamSupport.stream(cctx.offheap().cacheDataStores().spliterator(), false) .filter(ds -> ds.partId() == p) .findFirst(); }
/** * */ private void map0(boolean forceKeys) { assert retry == null : retry; if (!map(key, forceKeys)) { retry = cctx.affinity().partition(key); if (!isDone()) onDone((GridCacheEntryInfo)null); return; } getAsync(); }
/** * */ public static Throwable validate( GridCacheContext cctx, Object key, OperationType opType, Collection<Integer> lostParts ) { CacheGroupContext grp = cctx.group(); PartitionLossPolicy lostPlc = grp.config().getPartitionLossPolicy(); int partition = cctx.affinity().partition(key); return validate(cctx, key, partition, opType, lostPlc, lostParts); }
/** */ private KeyCacheObject toKey(EnlistOperation op, Object cur) { KeyCacheObject key = cctx.toCacheKeyObject(op.isDeleteOrLock() ? cur : ((IgniteBiTuple)cur).getKey()); if (key.partition() == -1) key.partition(cctx.affinity().partition(key)); return key; }
/** * @param node Node. * @param key Key. * @return Extracts update counter of partition which key belongs to. */ private long getUpdateCounter(IgniteEx node, Integer key) { int partId = node.cachex(DEFAULT_CACHE_NAME).context().affinity().partition(key); GridDhtLocalPartition part = node.cachex(DEFAULT_CACHE_NAME).context().dht().topology().localPartition(partId); assert part != null; return part.updateCounter(); } }