@Override public List<Address> getMembers() { return this.container.getMembers(); }
private String getClusterSize() { EmbeddedCacheManager cacheManager = (EmbeddedCacheManager) cache.getCacheManager(); List<Address> members = cacheManager.getMembers(); return members == null || members.isEmpty() ? "N/A" : "" + members.size(); }
protected void assertClusterSize(String message, int size) { for (EmbeddedCacheManager cm : cacheManagers) { assert cm.getMembers() != null && cm.getMembers().size() == size : message; } }
public List<Address> getCurrentView() { return new ArrayList<Address>(cache.getCacheManager().getMembers()); }
/** * {@inheritDoc} */ @Override protected boolean isAloneInCluster() { return cache.getRpcManager() == null || cache.getCacheManager().getMembers().size() == 1; }
/** * Registers Infinispan cluster metrics "infinispan.isCoordinator" and * "infinispan.numClusterMembers" for the specified cache manager. * * @param cacheManager The cache manager. */ public static void register(final EmbeddedCacheManager cacheManager) { MonitorRegistries.register("infinispan.isCoordinator", (Gauge<Boolean>) cacheManager::isCoordinator); MonitorRegistries.register("infinispan.numClusterMembers", (Gauge<Integer>) () -> { List<Address> members = cacheManager.getMembers(); if (members == null) { return 0; // no cluster } return members.size(); }); }
@ViewChanged public void viewChanged(ViewChangedEvent event) { System.out.printf("---- View changed: %s ----\n", event.getNewMembers()); if (event.getCacheManager().getMembers().size() == expectedNodes) { clusterFormedLatch.countDown(); } else if (event.getNewMembers().size() < event.getOldMembers().size()) { shutdownLatch.countDown(); } } }
@Test public void getMembers() { List<Address> expected = Collections.singletonList(mock(Address.class)); when(this.manager.getMembers()).thenReturn(expected); List<Address> result = this.subject.getMembers(); assertSame(expected, result); }
public static boolean areCacheViewsComplete(boolean barfIfTooManyMembers, CacheContainer... cacheContainers) { if (cacheContainers == null) throw new NullPointerException("Cache Manager array is null"); int memberCount = cacheContainers.length; for (CacheContainer cacheContainer : cacheContainers) { EmbeddedCacheManager cacheManager = (EmbeddedCacheManager) cacheContainer; if (!isCacheViewComplete(cacheManager.getMembers(), cacheManager.getAddress(), memberCount, barfIfTooManyMembers)) { return false; } } return true; }
private static void blockUntilViewsChanged(Cache[] caches, long timeout, int finalViewSize) { long failTime = System.currentTimeMillis() + timeout; while (System.currentTimeMillis() < failTime) { sleepThread(100); if (areCacheViewsChanged(caches, finalViewSize)) { return; } } List<List<Address>> allViews = new ArrayList<>(caches.length); for (Cache cache : caches) { allViews.add(cache.getCacheManager().getMembers()); } throw new RuntimeException(String.format( "Timed out before caches had changed views (%s) to contain %d members", allViews, finalViewSize)); }
public static void blockUntilViewReceived(Cache cache, int groupSize, long timeout, boolean barfIfTooManyMembersInView) { long failTime = System.currentTimeMillis() + timeout; while (System.currentTimeMillis() < failTime) { sleepThread(100); EmbeddedCacheManager cacheManager = cache.getCacheManager(); if (isCacheViewComplete(cacheManager.getMembers(), cacheManager.getAddress(), groupSize, barfIfTooManyMembersInView)) { return; } } throw new RuntimeException(String.format( "Timed out before cache had %d members. View is %s", groupSize, cache.getCacheManager().getMembers())); }
private static boolean areCacheViewsChanged(Cache[] caches, int finalViewSize) { int memberCount = caches.length; for (Cache cache : caches) { EmbeddedCacheManager cacheManager = cache.getCacheManager(); if (!isCacheViewChanged(cacheManager.getMembers(), finalViewSize)) { return false; } } return true; }
private static void viewsTimedOut(CacheContainer[] cacheContainers) { int length = cacheContainers.length; List<View> incompleteViews = new ArrayList<>(length); for (CacheContainer cacheContainer : cacheContainers) { EmbeddedCacheManager cm = (EmbeddedCacheManager) cacheContainer; if (cm.getMembers().size() != cacheContainers.length) { incompleteViews.add(((JGroupsTransport) cm.getTransport()).getChannel().getView()); log.warnf("Manager %s has an incomplete view: %s", cm.getAddress(), cm.getMembers()); } } throw new TimeoutException(String.format( "Timed out before caches had complete views. Expected %d members in each view. Views are as follows: %s", cacheContainers.length, incompleteViews)); }
/** * @param c * @param memberCount */ public static boolean isCacheViewComplete(Cache c, int memberCount) { EmbeddedCacheManager cacheManager = c.getCacheManager(); return isCacheViewComplete(cacheManager.getMembers(), cacheManager.getAddress(), memberCount, true); }
public static boolean areCacheViewsComplete(Cache[] caches, boolean barfIfTooManyMembers) { int memberCount = caches.length; for (Cache cache : caches) { EmbeddedCacheManager cacheManager = cache.getCacheManager(); if (!isCacheViewComplete(cacheManager.getMembers(), cacheManager.getAddress(), memberCount, barfIfTooManyMembers)) { return false; } } return true; }
public void testInitialClusterSize() throws ExecutionException, InterruptedException, TimeoutException { Future<?>[] threads = new Future[CLUSTER_SIZE]; for (int i = 0; i < CLUSTER_SIZE; i++) { final int index = i; threads[i] = fork(() -> { manager(index).start(); }); } for(Future<?> f : threads) { f.get(15, TimeUnit.SECONDS); } assertEquals(CLUSTER_SIZE, manager(0).getMembers().size()); }
@Test public void testReadWriteUnderTopologyChanges() throws Exception { CompletableFuture<?> f1 = indexing1.addToCluster().run(); CompletableFuture<?> f2 = indexing2.addToCluster().run(); eventuallyEquals(2, () -> indexing2.cacheManager.getMembers().size()); CompletableFuture<?> f3 = indexing3.addToCluster().run(); CompletableFuture<?> f4 = querying.addToCluster().run(); CompletableFuture.allOf(f1, f2, f3, f4).join(); assertDocsIndexed(50000L); }
/** * Counts the number of nodes in the cluster on this node * * @param node the FullTextSessionBuilder representing the current node * @return the number of nodes as seen by the current node */ public static int clusterSize(FullTextSessionBuilder node, IndexedTypeIdentifier entityType) { SearchIntegrator integrator = node.getSearchFactory().unwrap(SearchIntegrator.class); EntityIndexBinding indexBinding = integrator.getIndexBinding(entityType); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexBinding.getIndexManagerSelector().all().iterator().next(); InfinispanDirectoryProvider directoryProvider = (InfinispanDirectoryProvider) indexManager.getDirectoryProvider(); EmbeddedCacheManager cacheManager = directoryProvider.getCacheManager(); List<Address> members = cacheManager.getMembers(); return members.size(); }
/** * Counts the number of nodes in the cluster on this node * * @param node the FullTextSessionBuilder representing the current node * @return */ protected int clusterSize(FullTextSessionBuilder node, Class<?> entityType) { SearchIntegrator integrator = node.getSearchFactory().unwrap(SearchIntegrator.class); EntityIndexBinding indexBinding = integrator.getIndexBinding(TOASTER_TYPE); DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexBinding.getIndexManagerSelector().all().iterator().next(); InfinispanDirectoryProvider directoryProvider = (InfinispanDirectoryProvider) indexManager.getDirectoryProvider(); EmbeddedCacheManager cacheManager = directoryProvider.getCacheManager(); List<Address> members = cacheManager.getMembers(); return members.size(); } }
public void testRpcManagerElements() { assertEquals("CacheMode.LOCAL cache has no address", null, manager(cache.getCache()).getAddress()); assertEquals("CacheMode.LOCAL cache has no members list", null, manager(cache.getCache()).getMembers()); }