/** {@inheritDoc} */ @Override public int partitions() { return delegate.partitions(); }
/** {@inheritDoc} */ @Override public List<List<ClusterNode>> assignPartitions(AffinityFunctionContext affCtx) { return delegate.assignPartitions(affCtx); }
/** {@inheritDoc} */ @Override public void removeNode(UUID nodeId) { delegate.removeNode(nodeId); } }
/** {@inheritDoc} */ @Override public long processInStreamOutLong(int type, BinaryRawReaderEx reader) throws IgniteCheckedException { if (type == OP_PARTITION) return baseFunc.partition(reader.readObjectDetached()); else if (type == OP_REMOVE_NODE) { baseFunc.removeNode(reader.readUuid()); return 0; } return super.processInStreamOutLong(type, reader); }
info("======================================"); List<List<ClusterNode>> assignment = aff.assignPartitions( new GridAffinityFunctionContextImpl(nodes, prev, discoEvt, new AffinityTopologyVersion(i), backups)); verifyAssignment(assignment, backups, aff.partitions(), nodes.size());
/** * @param c Cache projection. */ private void affinityAfterStart(IgniteCache<Integer, String> c) { if (DEBUG) { for (int key = 0; key < keyCnt; key++) { int part = affinity(c).partition(key); info("Affinity nodes after start [key=" + key + ", partition" + part + ", nodes=" + U.nodeIds(affinity(c).mapPartitionToPrimaryAndBackups(part)) + ']'); } } }
/** {@inheritDoc} */ @Override public void reset() { // userFunc is always in initial state (it is serialized only once on start). if (baseFunc != null) baseFunc.reset(); }
/** * JUnit. * * @throws Exception If failed. */ @Test public void testMapPartitionsToNodeCollection() throws Exception { Collection<Integer> parts = new LinkedList<>(); for (int p = 0; p < affinity().partitions(); p++) parts.add(p); Map<Integer, ClusterNode> map = grid(0).affinity(DEFAULT_CACHE_NAME).mapPartitionsToNodes(parts); AffinityFunctionContext ctx = new GridAffinityFunctionContextImpl(new ArrayList<>(grid(0).cluster().nodes()), null, null, new AffinityTopologyVersion(1), 1); AffinityFunction aff = affinity(); List<List<ClusterNode>> assignment = aff.assignPartitions(ctx); for (Map.Entry<Integer, ClusterNode> e : map.entrySet()) assert F.eqNodes(F.first(nodes(assignment, aff, e.getKey())), e.getValue()); }
/** * @param c Cache projection. */ private void affinityBeforeStop(IgniteCache<Integer, String> c) { if (DEBUG) { for (int key = 0; key < keyCnt; key++) { int part = affinity(c).partition(key); info("Affinity nodes before stop [key=" + key + ", partition" + part + ", nodes=" + U.nodeIds(affinity(c).mapPartitionToPrimaryAndBackups(part)) + ']'); } } }
/** {@inheritDoc} */ @Override public void reset() { delegate.reset(); }
/** {@inheritDoc} */ @Override public long processInStreamOutLong(int type, BinaryRawReaderEx reader) throws IgniteCheckedException { if (type == OP_PARTITION) return baseFunc.partition(reader.readObjectDetached()); else if (type == OP_REMOVE_NODE) { baseFunc.removeNode(reader.readUuid()); return 0; } return super.processInStreamOutLong(type, reader); }
/** * @return Affinity partitions count. */ public int affinityPartitionsCount() { return ccfg.getAffinity().partitions(); }
/** * JUnit. * * @throws Exception If failed. */ @Test public void testMapPartitionToNode() throws Exception { int part = RND.nextInt(affinity().partitions()); AffinityFunctionContext ctx = new GridAffinityFunctionContextImpl(new ArrayList<>(grid(0).cluster().nodes()), null, null, new AffinityTopologyVersion(1), 1); AffinityFunction aff = affinity(); List<List<ClusterNode>> assignment = aff.assignPartitions(ctx); assertEquals(F.first(nodes(assignment, aff, part)), grid(0).affinity(DEFAULT_CACHE_NAME).mapPartitionToNode(part)); }
/** {@inheritDoc} */ @Override public List<List<ClusterNode>> assignPartitions(AffinityFunctionContext affCtx) { List<List<ClusterNode>> res0 = delegate.assignPartitions(affCtx); List<List<ClusterNode>> res = new ArrayList<>(res0.size()); for (int p = 0; p < res0.size(); p++) res.add(p, null); for (int p = 0; p < res0.size(); p++) res.set(partsAffMapping.get(p), res0.get(p)); return res; }
/** {@inheritDoc} */ @Override public int partition(Object key) { return delegate.partition(key); }
/** {@inheritDoc} */ @Override public void removeNode(UUID nodeId) { delegate.removeNode(nodeId); } }
/** {@inheritDoc} */ @Override public void reset() { delegate.reset(); }
/** {@inheritDoc} */ @Override public int partitions() { return delegate.partitions(); }
new GridAffinityFunctionContextImpl(nodes, prev, discoEvt, new AffinityTopologyVersion(i), backups); List<List<ClusterNode>> assignment = aff.assignPartitions(ctx); verifyAssignment(assignment, backups, aff.partitions(), nodes.size()); List<List<ClusterNode>> assignment = aff.assignPartitions( new GridAffinityFunctionContextImpl(nodes, prev, discoEvt, new AffinityTopologyVersion(i), backups)); verifyAssignment(assignment, backups, aff.partitions(), nodes.size());
/** {@inheritDoc} */ @Override public void processOutStream(int type, BinaryRawWriterEx writer) throws IgniteCheckedException { if (type == OP_ASSIGN_PARTITIONS) { AffinityFunctionContext affCtx = currentAffCtx.get(); if (affCtx == null) throw new IgniteException("Thread-local AffinityFunctionContext is null. " + "This may indicate an unsupported call to the base AffinityFunction."); final List<List<ClusterNode>> partitions = baseFunc.assignPartitions(affCtx); PlatformAffinityUtils.writePartitionAssignment(partitions, writer, platformContext()); return; } super.processOutStream(type, writer); }