@Override public boolean isSingleton() { return this.cache.getCacheManager().getTransport() == null; }
@TopologyChanged public void topologyChanged(TopologyChangedEvent<?, ?> event) { if (event.isPre()) return; int viewId = event.getCache().getCacheManager().getTransport().getViewId(); if (!this.listeners.isEmpty()) { Address localAddress = event.getCache().getCacheManager().getAddress(); Membership previousMembership = new CacheMembership(localAddress, event.getWriteConsistentHashAtStart(), this); Membership membership = new CacheMembership(localAddress, event.getWriteConsistentHashAtEnd(), this); Boolean status = this.views.get(viewId); boolean merged = (status != null) ? status.booleanValue() : false; for (Map.Entry<GroupListener, ExecutorService> entry : this.listeners.entrySet()) { GroupListener listener = entry.getKey(); ExecutorService executor = entry.getValue(); try { executor.submit(() -> { try { listener.membershipChanged(previousMembership, membership, merged); } catch (Throwable e) { ClusteringServerLogger.ROOT_LOGGER.warn(e.getLocalizedMessage(), e); } }); } catch (RejectedExecutionException e) { // Listener was unregistered } } } // Purge obsolete views this.views.headMap(viewId).clear(); }
@Override public Membership getMembership() { if (this.isSingleton()) { return new SingletonMembership(this.getLocalMember()); } Transport transport = this.cache.getCacheManager().getTransport(); DistributionManager dist = this.cache.getAdvancedCache().getDistributionManager(); return (dist != null) ? new CacheMembership(transport.getAddress(), dist.getCacheTopology(), this) : new CacheMembership(transport, this); }
@Override public boolean isSingleton() { return this.cache.getCacheManager().getTransport() == null; }
/** * Shutdown the backend and free all runtime resources. */ @Override public void shutdown() { log.warn("shutting down cache manager ..."); if(cacheManager.getTransport() != null) { log.info("... shutting down transport ..."); cacheManager.getTransport().stop(); } log.info("... shutting down main component ..."); cacheManager.stop(); log.info("... done!"); } }
/** * * @param cache * @return true if cluster coordinator OR if it's local cache */ public static boolean isCoordinator(Cache cache) { Transport transport = cache.getCacheManager().getTransport(); return transport == null || transport.isCoordinator(); }
@Override protected boolean isCoordinator() { Transport transport = workCache.getCacheManager().getTransport(); return transport == null || transport.isCoordinator(); }
private boolean isCoordinator() { Transport transport = cache.getCacheManager().getTransport(); return transport == null || transport.isCoordinator(); }
private List<BlockingTransport> getBlockingTransport(int siteIndex, boolean createIfAbsent) { List<EmbeddedCacheManager> cacheManagerList = site(siteIndex).cacheManagers(); List<BlockingTransport> blockingTransportList = new ArrayList<>(cacheManagerList.size()); cacheManagerList.forEach(cacheManager -> { Transport transport = cacheManager.getTransport(); if (transport instanceof BlockingTransport) { blockingTransportList.add((BlockingTransport) transport); } else if (createIfAbsent) { BlockingTransport blockingTransport = new BlockingTransport(transport); TestingUtil.replaceComponent(cacheManager, Transport.class, blockingTransport, true); blockingTransportList.add(blockingTransport); } }); return blockingTransportList.isEmpty() ? Collections.emptyList() : blockingTransportList; }
@Override public void call() { Transport transport = cm.getTransport(); assertNotNull(transport); assertTrue(transport instanceof CustomTransport); } });
public void testSitesView() { assertEquals(new HashSet<>(Arrays.asList("LON", "NYC")), site("LON").cacheManagers().get(0).getTransport().getSitesView()); assertEquals(new HashSet<>(Arrays.asList("LON", "NYC")), site("NYC").cacheManagers().get(0).getTransport().getSitesView()); }
public static void installNewView(Stream<Address> members, EmbeddedCacheManager... where) { installNewView(members, ecm -> { Transport transport = ecm.getTransport(); while (Proxy.isProxyClass(transport.getClass())) { // Unwrap proxies created by the StateSequencer transport = extractField(extractField(transport, "h"), "wrappedInstance"); } return ((JGroupsTransport) transport).getChannel(); }, where); }
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)); }
protected RELAY2 getRELAY2(EmbeddedCacheManager cacheManager) { JGroupsTransport transport = (JGroupsTransport) cacheManager.getTransport(); return transport.getChannel().getProtocolStack().findProtocol(RELAY2.class); }
private void installNewView(Cache installing, Cache... cachesInView) { JGroupsTransport transport = (JGroupsTransport) installing.getCacheManager().getTransport(); JChannel channel = transport.getChannel(); org.jgroups.Address[] members = Stream.of(cachesInView) .map(c -> ((JGroupsAddress) address(c)).getJGroupsAddress()) .toArray(org.jgroups.Address[]::new); View view = View.create(members[0], transport.getViewId() + 1, members); ((GMS) channel.getProtocolStack().findProtocol(GMS.class)).installView(view); }
@Override public Membership getMembership() { if (this.isSingleton()) { return new SingletonMembership(this.getLocalMember()); } Transport transport = this.cache.getCacheManager().getTransport(); DistributionManager dist = this.cache.getAdvancedCache().getDistributionManager(); return (dist != null) ? new CacheMembership(transport.getAddress(), dist.getCacheTopology(), this) : new CacheMembership(transport, this); }
public void testSynchronousIgnoreLeaversInvocationToNonMembers() throws Exception { UUID randomUuid = UUID.randomUUID(); Address randomAddress = JGroupsAddressCache.fromJGroupsAddress(randomUuid); JGroupsTransport transport = (JGroupsTransport) manager(0).getTransport(); long initialMessages = transport.getChannel().getSentMessages(); ReplicableCommand command = new ClusteredGetCommand("key", CACHE_NAME, 0, 0); CompletableFuture<Map<Address, Response>> future = transport .invokeRemotelyAsync(Collections.singletonList(randomAddress), command, ResponseMode.SYNCHRONOUS_IGNORE_LEAVERS, 1, null, DeliverOrder.NONE, true); assertEquals(CacheNotFoundResponse.INSTANCE, future.get().get(randomAddress)); assertEquals(initialMessages, transport.getChannel().getSentMessages()); }
/** * {@inheritDoc} * @see org.jboss.msc.service.Service#start(org.jboss.msc.service.StartContext) */ @Override public void start(StartContext context) throws StartException { this.config = this.getConfigurationBuilder().build(); EmbeddedCacheManager container = this.getCacheContainer(); CacheMode mode = this.config.clustering().cacheMode(); if (mode.isClustered() && (container.getTransport() == null)) { throw InfinispanMessages.MESSAGES.transportRequired(mode, this.name, container.getCacheManagerConfiguration().globalJmxStatistics().cacheManagerName()); } SecurityActions.defineContainerConfiguration(container, this.name, this.config); log.debugf("%s cache configuration started", this.name); }
public void triggerRebalance(Cache<?, ?> cache) throws Exception { EmbeddedCacheManager cacheManager = cache.getCacheManager(); ClusterTopologyManager clusterTopologyManager = cacheManager .getGlobalComponentRegistry().getComponent(ClusterTopologyManager.class); assertTrue("triggerRebalance must be called on the coordinator node", cacheManager.getTransport().isCoordinator()); clusterTopologyManager.forceRebalance(cache.getName()); }
public void testLazyStart() { for (EmbeddedCacheManager manager : cacheManagers) { assertFalse(manager.isRunning(CounterModuleLifecycle.COUNTER_CACHE_NAME)); } counterManager(0).defineCounter("some-counter", CounterConfiguration.builder(CounterType.WEAK).build()); for (EmbeddedCacheManager manager : cacheManagers) { eventually(() -> "counter cache didn't start in " + manager.getTransport().getAddress(), () -> manager.isRunning(CounterModuleLifecycle.COUNTER_CACHE_NAME), 30, TimeUnit.SECONDS); } }