use of org.wildfly.clustering.group.Node in project wildfly by wildfly.
the class ChannelCommandDispatcher method executeOnCluster.
@Override
public <R> Map<Node, CommandResponse<R>> executeOnCluster(Command<R, ? super C> command, Node... excludedNodes) throws CommandDispatcherException {
Message message = this.createMessage(command);
RequestOptions options = this.createRequestOptions(excludedNodes);
try {
Map<Address, Rsp<R>> responses = this.dispatcher.castMessage(null, message, options);
Map<Node, CommandResponse<R>> results = new HashMap<>();
for (Map.Entry<Address, Rsp<R>> entry : responses.entrySet()) {
Address address = entry.getKey();
Rsp<R> response = entry.getValue();
if (response.wasReceived() && !response.wasSuspected()) {
results.put(this.factory.createNode(address), createCommandResponse(response));
}
}
return results;
} catch (Exception e) {
throw new CommandDispatcherException(e);
}
}
use of org.wildfly.clustering.group.Node in project wildfly by wildfly.
the class ClusterTopologyRetrieverBean method getClusterTopology.
@Override
public ClusterTopology getClusterTopology() {
try {
Collection<CommandResponse<String>> responses = this.dispatcher.executeOnCluster(this.command).values();
List<String> nodes = new ArrayList<>(responses.size());
for (CommandResponse<String> response : responses) {
nodes.add(response.get());
}
Node localNode = this.factory.getGroup().getLocalNode();
String local = this.dispatcher.executeOnNode(this.command, localNode).get();
responses = this.dispatcher.executeOnCluster(this.command, localNode).values();
List<String> remote = new ArrayList<>(responses.size());
for (CommandResponse<String> response : responses) {
remote.add(response.get());
}
return new ClusterTopology(nodes, local, remote);
} catch (Exception e) {
throw new IllegalStateException(e.getCause());
}
}
use of org.wildfly.clustering.group.Node in project wildfly by wildfly.
the class NodeServiceServlet method doGet.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String serviceName = getRequiredParameter(req, SERVICE);
String expected = req.getParameter(EXPECTED);
this.log(String.format("Received request for %s, expecting %s", serviceName, expected));
@SuppressWarnings("unchecked") ServiceController<Node> service = (ServiceController<Node>) CurrentServiceContainer.getServiceContainer().getService(ServiceName.parse(serviceName));
try {
Node node = service.awaitValue();
if (expected != null) {
for (int i = 0; i < RETRIES; ++i) {
if ((node != null) && expected.equals(node.getName()))
break;
Thread.yield();
node = service.awaitValue();
}
}
if (node != null) {
resp.setHeader(NODE_HEADER, node.getName());
}
} catch (IllegalStateException e) {
// Thrown when quorum was not met
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
resp.getWriter().write("Success");
}
use of org.wildfly.clustering.group.Node in project quickstart by wildfly.
the class ServiceActivator method activate.
@Override
public void activate(ServiceActivatorContext serviceActivatorContext) {
try {
SingletonPolicy policy = (SingletonPolicy) serviceActivatorContext.getServiceRegistry().getRequiredService(ServiceName.parse(SingletonDefaultRequirement.SINGLETON_POLICY.getName())).awaitValue();
InjectedValue<Group> group = new InjectedValue<>();
Service<Node> service = new SingletonService(group);
policy.createSingletonServiceBuilder(SINGLETON_SERVICE_NAME, service).build(serviceActivatorContext.getServiceTarget()).addDependency(ServiceName.parse("org.wildfly.clustering.default-group"), Group.class, group).install();
serviceActivatorContext.getServiceTarget().addService(QUERYING_SERVICE_NAME, new QueryingService()).setInitialMode(ServiceController.Mode.ACTIVE).install();
LOG.info("Singleton and querying services activated.");
} catch (InterruptedException e) {
throw new ServiceRegistryException(e);
}
}
use of org.wildfly.clustering.group.Node in project wildfly by wildfly.
the class InfinispanRouteLocator method locate.
@Override
public String locate(String sessionId) {
Map.Entry<String, Void> entry = null;
Address location = this.locatePrimaryOwner(sessionId);
if (location != null) {
Node node = this.factory.createNode(location);
entry = this.registry.getEntry(node);
}
return (entry != null) ? entry.getKey() : null;
}
Aggregations