/** {@inheritDoc} */ @Override public final ClusterGroup forNodeIds(Collection<UUID> ids) { A.notEmpty(ids, "ids"); guard(); try { Set<UUID> nodeIds = U.newHashSet(ids.size()); for (UUID id : ids) { if (contains(id)) nodeIds.add(id); } return new ClusterGroupAdapter(ctx, subjId, nodeIds); } finally { unguard(); } }
/** {@inheritDoc} */ @Override public final ClusterGroup forCacheNodes(String cacheName) { CU.validateCacheName(cacheName); checkDaemon(); return forPredicate(new CachesFilter(cacheName, true, true, true)); }
/** {@inheritDoc} */ @Override public final IgniteCompute compute(ClusterGroup grp) { return ((ClusterGroupAdapter)grp).compute(); }
/** {@inheritDoc} */ @Override public ClusterGroupEx forSubjectId(UUID subjId) { if (subjId == null) return this; guard(); try { return ids != null ? new ClusterGroupAdapter(ctx, subjId, ids) : new ClusterGroupAdapter(ctx, subjId, p); } finally { unguard(); } }
/** {@inheritDoc} */ @Override public final ClusterGroup forRandom() { if (!F.isEmpty(ids)) return forNodeId(F.rand(ids)); Collection<ClusterNode> nodes = nodes(); if (nodes.isEmpty()) return new ClusterGroupAdapter(ctx, null, Collections.<UUID>emptySet()); return forNode(F.rand(nodes)); }
/** * @param excludeIds Node IDs. * @return New cluster group. */ private ClusterGroup forOthers(Collection<UUID> excludeIds) { assert excludeIds != null; if (ids != null) { guard(); try { Set<UUID> nodeIds = U.newHashSet(ids.size()); for (UUID id : ids) { if (!excludeIds.contains(id)) nodeIds.add(id); } return new ClusterGroupAdapter(ctx, subjId, nodeIds); } finally { unguard(); } } else return forPredicate(new OthersFilter(excludeIds)); }
/** * Reconstructs object on unmarshalling. * * @return Reconstructed object. * @throws ObjectStreamException Thrown in case of unmarshalling error. */ protected Object readResolve() throws ObjectStreamException { try { IgniteKernal g = IgnitionEx.localIgnite(); return ids != null ? new ClusterGroupAdapter(g.context(), subjId, ids) : new ClusterGroupAdapter(g.context(), subjId, p); } catch (IllegalStateException e) { throw U.withCause(new InvalidObjectException(e.getMessage()), e); } }
/** * Check cluster state. * * @return Cluster state, {@code True} if cluster active, {@code False} if inactive. */ private IgniteFuture<Boolean> sendComputeCheckGlobalState() { AffinityTopologyVersion topVer = ctx.discovery().topologyVersionEx(); if (log.isInfoEnabled()) { log.info("Sending check cluster state request from node [id=" + ctx.localNodeId() + ", topVer=" + topVer + ", client=" + ctx.clientNode() + ", daemon" + ctx.isDaemon() + "]"); } ClusterGroupAdapter clusterGroupAdapter = (ClusterGroupAdapter)ctx.cluster().get().forServers(); if (F.isEmpty(clusterGroupAdapter.nodes())) return new IgniteFinishedFutureImpl<>(false); IgniteCompute comp = clusterGroupAdapter.compute(); return comp.callAsync(new IgniteCallable<Boolean>() { @IgniteInstanceResource private Ignite ig; @Override public Boolean call() throws Exception { return ig.active(); } }); }
/** * Reconstructs object on unmarshalling. * * @return Reconstructed object. * @throws ObjectStreamException Thrown in case of unmarshalling error. */ protected Object readResolve() throws ObjectStreamException { return prj.executorService(); }
/** {@inheritDoc} */ @Override public final ClusterGroup forRemotes() { return forOthers(Collections.singleton(ctx.localNodeId())); }
/** * Reconstructs object on unmarshalling. * * @return Reconstructed object. * @throws ObjectStreamException Thrown in case of unmarshalling error. */ protected Object readResolve() throws ObjectStreamException { return prj.events(); } }
/** {@inheritDoc} */ @Override public final ClusterGroup forHost(ClusterNode node) { A.notNull(node, "node"); String macs = node.attribute(ATTR_MACS); assert macs != null; return forAttribute(ATTR_MACS, macs); }
/** {@inheritDoc} */ @Override public ClusterGroup forOthers(ClusterGroup grp) { A.notNull(grp, "grp"); if (ids != null) { guard(); try { Set<UUID> nodeIds = U.newHashSet(ids.size()); for (UUID id : ids) { ClusterNode n = node(id); if (n != null && !grp.predicate().apply(n)) nodeIds.add(id); } return new ClusterGroupAdapter(ctx, subjId, nodeIds); } finally { unguard(); } } else return forPredicate(F.not(grp.predicate())); }
/** {@inheritDoc} */ @Override public ClusterGroup forPredicate(IgnitePredicate<ClusterNode> p) { A.notNull(p, "p"); guard(); try { if (p != null) ctx.resource().injectGeneric(p); return new ClusterGroupAdapter(ctx, subjId, this.p != null ? F.and(p, this.p) : p); } catch (IgniteCheckedException e) { throw U.convertException(e); } finally { unguard(); } }
/** {@inheritDoc} */ @Override public final ClusterGroup forRandom() { if (!F.isEmpty(ids)) return forNodeId(F.rand(ids)); Collection<ClusterNode> nodes = nodes(); if (nodes.isEmpty()) return new ClusterGroupAdapter(ctx, null, Collections.<UUID>emptySet()); return forNode(F.rand(nodes)); }
/** {@inheritDoc} */ @Override public ClusterGroup forLocal() { guard(); try { return new ClusterGroupAdapter(ctx, null, Collections.singleton(cfg.getNodeId())); } finally { unguard(); } }
/** * Check cluster state. * * @return Cluster state, {@code True} if cluster active, {@code False} if inactive. */ private boolean sendComputeCheckGlobalState() { AffinityTopologyVersion topVer = ctx.discovery().topologyVersionEx(); if (log.isInfoEnabled()) { log.info("Sending check cluster state request from node [id=" + ctx.localNodeId() + ", topVer=" + topVer + ", client=" + ctx.clientNode() + ", daemon" + ctx.isDaemon() + "]"); } ClusterGroupAdapter clusterGroupAdapter = (ClusterGroupAdapter)ctx.cluster().get().forServers(); if (F.isEmpty(clusterGroupAdapter.nodes())) return false; IgniteCompute comp = clusterGroupAdapter.compute(); return comp.call(new IgniteCallable<Boolean>() { @IgniteInstanceResource private Ignite ig; @Override public Boolean call() throws Exception { return ig.active(); } }); }
/** {@inheritDoc} */ @Override public ExecutorService executorService(ClusterGroup grp) { return ((ClusterGroupAdapter)grp).executorService(); }
/** {@inheritDoc} */ @Override public final ClusterGroup forOthers(ClusterNode node, ClusterNode... nodes) { A.notNull(node, "node"); return forOthers(F.concat(false, node.id(), F.nodeIds(Arrays.asList(nodes)))); }
/** {@inheritDoc} */ @Override public final IgniteEvents events(ClusterGroup grp) { return ((ClusterGroupAdapter)grp).events(); }