/** * @return Affinity. */ protected Affinity<K> affinity() { return ignite.affinity(cacheName); } }
/** * @param ignite Grid. * @return Affinity. */ static Affinity<Object> affinity(Ignite ignite) { return ignite.affinity(DEFAULT_CACHE_NAME); }
/** * @param g Grid. * @return Affinity. */ private Affinity<Object> affinity(Ignite g) { return g.affinity(DEFAULT_CACHE_NAME); }
/** * @param ignite Grid. * @return Affinity. */ static Affinity<Object> affinity(Ignite ignite) { return ignite.affinity(DEFAULT_CACHE_NAME); }
/** * @param entries Entries. * @param g Grid. * @return Affinity nodes. */ private Set<UUID> affinityNodes(Iterable<Cache.Entry<Integer, Integer>> entries, Ignite g) { Set<UUID> nodes = new HashSet<>(); for (Cache.Entry<Integer, Integer> entry : entries) nodes.add(g.affinity(DEFAULT_CACHE_NAME).mapKeyToPrimaryAndBackups(entry.getKey()).iterator().next().id()); return nodes; }
/** {@inheritDoc} */ @Override public boolean apply(CacheEvent evt) { Affinity<Object> affinity = ignite.affinity(cacheName); if (affinity.isPrimary(ignite.cluster().localNode(), evt.key())) { // Process this event. Ignored on backups. if (filter != null && filter.apply(evt)) return false; return true; } return false; } }
/** {@inheritDoc} */ @Override public boolean apply(CacheEvent evt) { Affinity<Object> affinity = ignite.affinity(cacheName); // Process this event. Ignored on backups. return affinity.isPrimary(ignite.cluster().localNode(), evt.key()) && (filter == null || filter.apply(evt)); } }
/** * @param cacheName Cache name. */ private int mapped(String cacheName) { int mapped = 0; ClusterGroup srvs = ignite.cluster().forServers(); Collection<ClusterNode> nodes = srvs.forDataNodes(cacheName).nodes(); for (ClusterNode node : nodes) mapped += ignite.affinity(cacheName).primaryPartitions(node).length; return mapped; }
/** Constructor */ AffinityKeyGenerator(Ignite node, String cacheName) { this.affinity = node.affinity(cacheName); this.node = node.cluster().localNode(); }
/** {@inheritDoc} */ @Override protected Object executeJob(int gridSize, String arg) { A.notNull(arg, "task argument"); String[] split = arg.split(":", 2); A.ensure(split.length == 2, "Task argument should have format 'cacheName:affinityKey'."); String cacheName = split[0]; String affKey = split[1]; if ("null".equals(cacheName)) cacheName = null; ClusterNode node = ignite.affinity(cacheName).mapKeyToNode(affKey); return node.id().toString(); }
@Override public boolean apply() { // Partition count which must be transferred to 2'nd node. int parts = ignite2.affinity(DEFAULT_CACHE_NAME).allPartitions(ignite2.cluster().localNode()).length; return evtCnt.get() >= parts; } }, 5000);
@Override public boolean apply() { // Partition count which must be transferred to 2'nd node. int parts = ignite2.affinity(DEFAULT_CACHE_NAME).allPartitions(ignite2.cluster().localNode()).length; return evtCnt.get() >= parts; } }, 5000);
/** */ private static int keyInSamePartition(Ignite ignite, String cacheName, int key) { Affinity<Object> affinity = ignite.affinity(cacheName); return IntStream.iterate(key + 1, i -> i + 1) .filter(i -> affinity.partition(i) == affinity.partition(key)) .findFirst().getAsInt(); }
/** */ private static int keyInDifferentPartition(Ignite ignite, String cacheName, int key) { Affinity<Object> affinity = ignite.affinity(cacheName); return IntStream.iterate(key + 1, i -> i + 1) .filter(i -> affinity.partition(i) != affinity.partition(key)) .findFirst().getAsInt(); } }
@Override public boolean apply(final Ignite ignite) { Collection<ClusterNode> srvs = ignite.cluster().forServers().nodes(); if (srvs.size() < serverCount()) return false; for (ClusterNode node : srvs) { int[] primaries = ignite.affinity(CACHE_NAME).primaryPartitions(node); if (primaries == null || primaries.length == 0) return false; } return true; } };
/** {@inheritDoc} */ @Override public void applyx() throws IgniteCheckedException { assert ignite.cluster().localNode().id().equals(ignite.affinity(DEFAULT_CACHE_NAME).mapKeyToNode(affKey).id()); assert ignite.cluster().localNode().id().equals(ignite.affinity(DEFAULT_CACHE_NAME).mapKeyToNode(key).id()); } }
/** {@inheritDoc} */ @Override public Object call() throws IgniteCheckedException { assert ignite.cluster().localNode().id().equals(ignite.affinity(DEFAULT_CACHE_NAME).mapKeyToNode(affKey).id()); assert ignite.cluster().localNode().id().equals(ignite.affinity(DEFAULT_CACHE_NAME).mapKeyToNode(key).id()); return null; } }
/** @throws Exception If failed. */ @Test public void testAffinity() throws Exception { waitTopologyUpdate(); Ignite g0 = grid(0); Ignite g1 = grid(1); for (int i = 0; i < 100; i++) assertEquals(g0.affinity(DEFAULT_CACHE_NAME).mapKeyToNode(i).id(), g1.affinity(DEFAULT_CACHE_NAME).mapKeyToNode(i).id()); }
@Override public IgniteFuture<?> applyx(ClusterGroup prj) { Affinity<Object> aff = prj.ignite().affinity(DEFAULT_CACHE_NAME); ClusterNode node = F.first(prj.nodes()); return compute(prj).affinityRunAsync(DEFAULT_CACHE_NAME, keyForNode(aff, node), new TestRunnable()); } });
@Override public IgniteFuture<?> applyx(ClusterGroup prj) { Affinity<Object> aff = prj.ignite().affinity(DEFAULT_CACHE_NAME); ClusterNode node = F.first(prj.nodes()); return compute(prj).affinityCallAsync(DEFAULT_CACHE_NAME, keyForNode(aff, node), new TestCallable()); } });