private ShardDistribution getShardDistribution() { if (shardDistribution == null) { shardDistribution = this.buildShardDistribution( distributionManager == null ? null : distributionManager.getWriteConsistentHash()); } return shardDistribution; }
private ShardDistribution getShardDistribution() { if (shardDistribution == null) { shardDistribution = this.buildShardDistribution( distributionManager == null ? null : distributionManager.getWriteConsistentHash()); } return shardDistribution; }
@TopologyChanged @SuppressWarnings("unused") public void onTopologyChange(TopologyChangedEvent<?, ?> tce) { if (initialized) { logger.debugf("Updating shard allocation"); this.shardDistribution = this.buildShardDistribution(distributionManager.getWriteConsistentHash()); } }
@TopologyChanged @SuppressWarnings("unused") public void onTopologyChange(TopologyChangedEvent<?, ?> tce) { if (initialized) { logger.debugf("Updating shard allocation"); this.shardDistribution = this.buildShardDistribution(distributionManager.getWriteConsistentHash()); } }
protected <K, V> AdvancedCache<K, V> getCacheFromNonPreferredPartition(AdvancedCache preferredCache) { for (Cache c : caches()) { AdvancedCache cache = (AdvancedCache) c; if (!cache.getDistributionManager().getWriteConsistentHash().equals(preferredCache.getDistributionManager().getWriteConsistentHash())) return cache; } return null; }
public void testHashesInitiated() { ConsistentHash hash = advancedCache(0, cacheName).getDistributionManager().getWriteConsistentHash(); containsAllHashes(hash); containsAllHashes(advancedCache(1, cacheName).getDistributionManager().getWriteConsistentHash()); containsAllHashes(advancedCache(2, cacheName).getDistributionManager().getWriteConsistentHash()); containsAllHashes(advancedCache(3, cacheName).getDistributionManager().getWriteConsistentHash()); }
void writeHashTopologyUpdate(AbstractHashDistAwareResponse h, HotRodServer server, HotRodHeader header, ByteBuf buffer) { AdvancedCache<byte[], byte[]> cache = server.getCacheInstance(UNKNOWN_TYPES, null, header.cacheName, server.getCacheManager(), false, true); DistributionManager distManager = cache.getDistributionManager(); ConsistentHash ch = distManager.getWriteConsistentHash();
private void testStayLocalIfAllSegmentsPresentLocally(boolean rehashAware) throws Exception { Cache<Object, String> cache0 = cache(0, CACHE_NAME); ClusterStreamManager clusterStreamManager = replaceWithSpy(cache0); IntStream.rangeClosed(0, 499).boxed().forEach(i -> cache0.put(i, i.toString())); KeyPartitioner keyPartitioner = TestingUtil.extractComponent(cache0, KeyPartitioner.class); ConsistentHash ch = cache0.getAdvancedCache().getDistributionManager().getWriteConsistentHash(); Set<Integer> segmentsCache0 = ch.getSegmentsForOwner(address(0)); CacheStream<Map.Entry<Object, String>> stream = cache0.entrySet().stream(); if (!rehashAware) stream = stream.disableRehashAware(); Map<Object, String> entries = mapFromIterator(stream.filterKeySegments(segmentsCache0).iterator()); Map<Integer, Set<Map.Entry<Object, String>>> entriesPerSegment = generateEntriesPerSegment(keyPartitioner, entries.entrySet()); // We should not see keys from other segments, but there may be segments without any keys assertTrue(segmentsCache0.containsAll(entriesPerSegment.keySet())); verify(clusterStreamManager, never()).awaitCompletion(any(UUID.class), anyLong(), any(TimeUnit.class)); }
public boolean clusterAndChFormed(int cacheIndex, int memberCount) { return advancedCache(cacheIndex).getRpcManager().getTransport().getMembers().size() == memberCount && advancedCache(cacheIndex).getDistributionManager().getWriteConsistentHash().getMembers().size() == memberCount; }
private Set<Integer> segments(Cache<?, ?> owner) { return owner.getAdvancedCache().getDistributionManager().getWriteConsistentHash() .getPrimarySegmentsForOwner(owner.getCacheManager().getAddress()); }
public void testIsReplicated() { // assert advancedCache(0).getDistributionManager().getConsistentHash() instanceof TopologyAwareConsistentHash; // assert advancedCache(1).getDistributionManager().getConsistentHash() instanceof TopologyAwareConsistentHash; // assert advancedCache(2).getDistributionManager().getConsistentHash() instanceof TopologyAwareConsistentHash; DistributionManagerImpl dmi = (DistributionManagerImpl) advancedCache(0).getDistributionManager(); log.trace("distributionManager.ConsistentHash() = " + dmi.getWriteConsistentHash()); assertTopologyInfo3Nodes(dmi.getWriteConsistentHash().getMembers()); dmi = (DistributionManagerImpl) advancedCache(1).getDistributionManager(); assertTopologyInfo3Nodes(dmi.getWriteConsistentHash().getMembers()); dmi = (DistributionManagerImpl) advancedCache(2).getDistributionManager(); assertTopologyInfo3Nodes(dmi.getWriteConsistentHash().getMembers()); ConsistentHash tach0 = advancedCache(0).getDistributionManager().getWriteConsistentHash(); ConsistentHash tach1 = advancedCache(1).getDistributionManager().getWriteConsistentHash(); assertEquals(tach0.getMembers(), tach1.getMembers()); ConsistentHash tach2 = advancedCache(2).getDistributionManager().getWriteConsistentHash(); assertEquals(tach0.getMembers(), tach2.getMembers()); }
@Test(dependsOnMethods = "testIsReplicated") public void testNodeLeaves() { TestingUtil.killCacheManagers(manager(1)); TestingUtil.blockUntilViewsReceived(60000, false, cache(0), cache(2)); TestingUtil.waitForNoRebalance(cache(0), cache(2)); DistributionManagerImpl dmi = (DistributionManagerImpl) advancedCache(0).getDistributionManager(); assertTopologyInfo2Nodes(dmi.getWriteConsistentHash().getMembers()); dmi = (DistributionManagerImpl) advancedCache(2).getDistributionManager(); assertTopologyInfo2Nodes(dmi.getWriteConsistentHash().getMembers()); ConsistentHash tach0 = advancedCache(0).getDistributionManager().getWriteConsistentHash(); ConsistentHash tach2 = advancedCache(2).getDistributionManager().getWriteConsistentHash(); assertEquals(tach0.getMembers(), tach2.getMembers()); }
@Override protected void createCacheManagers() throws Throwable { ConfigurationBuilder defaultConfig = getDefaultClusteredCacheConfig(cacheMode); log.debug("defaultConfig = " + defaultConfig.build().clustering().hash().numOwners()); defaultConfig.clustering().l1().disable().stateTransfer().fetchInMemoryState(true); createClusteredCaches(5, defaultConfig); ConsistentHash hash = cache(0).getAdvancedCache().getDistributionManager().getWriteConsistentHash(); List<Address> members = hash.getMembers(); addresses = members.toArray(new Address[members.size()]); }
protected void shutdownAndRestart(int extraneousNodePosition, boolean reverse) throws Throwable { Map<JGroupsAddress, PersistentUUID> addressMappings = createInitialCluster(); ConsistentHash oldConsistentHash = cache(0).getAdvancedCache().getDistributionManager().getWriteConsistentHash(); cache(0).getAdvancedCache().getDistributionManager().getWriteConsistentHash(); PersistentUUIDManager persistentUUIDManager = TestingUtil.extractGlobalComponent(manager(0), PersistentUUIDManager.class); assertEquivalent(addressMappings, oldConsistentHash, newConsistentHash, persistentUUIDManager);
public void testMultipleLeaves() throws Exception { //kill 3 caches at once fork(() -> manager(3).stop()); fork(() -> manager(2).stop()); fork(() -> manager(1).stop()); eventuallyEquals(1, () -> advancedCache(0).getRpcManager().getTransport().getMembers().size()); log.trace("MultipleNodesLeavingTest.testMultipleLeaves"); TestingUtil.blockUntilViewsReceived(60000, false, cache(0)); TestingUtil.waitForNoRebalance(cache(0)); List<Address> caches = advancedCache(0).getDistributionManager().getWriteConsistentHash().getMembers(); log.tracef("caches = %s", caches); int size = caches.size(); assert size == 1; } }
assertEquals(Arrays.asList(address(0)), c0.getAdvancedCache().getDistributionManager().getWriteConsistentHash().getMembers()); eventuallyEquals(1, () -> tt0.getRemoteTransactions().size());
assertEquals(new HashSet<>(advancedCache(p0.node(0)).getDistributionManager().getWriteConsistentHash().getMembers()), members); assertEquals(new HashSet<>(advancedCache(p0.node(1)).getDistributionManager().getWriteConsistentHash().getMembers()), members); assertEquals(new HashSet<>(advancedCache(p1.node(0)).getDistributionManager().getWriteConsistentHash().getMembers()), members); assertEquals(new HashSet<>(advancedCache(p2.node(0)).getDistributionManager().getWriteConsistentHash().getMembers()), members);
log.info("Here is where ST ends"); List<Address> addressList = cache(addresses[0]).getAdvancedCache().getDistributionManager() .getWriteConsistentHash().getMembers(); log.debug("After shutting down " + addresses[4] + " caches are " + addressList); TestingUtil.waitForNoRebalance(caches()); addressList = cache(addresses[0]).getAdvancedCache().getDistributionManager() .getWriteConsistentHash().getMembers(); log.debug("After shutting down " + addresses[2] + " caches are " + addressList); TestingUtil.waitForNoRebalance(caches()); addressList = cache(addresses[0]).getAdvancedCache().getDistributionManager() .getWriteConsistentHash().getMembers(); log.debug("After shutting down " + addresses[1] + " caches are " + addressList);