/** * Build server ID from ConnectionInfo object. * * @param info ConnectionInfo * @return server ID in format thriftHost:thriftPort */ public static String getServerId(ConnectionInfo info) { return getServerId(KaaThriftService.OPERATIONS_SERVICE, info); }
public void setZkNode(KaaThriftService service, ConnectionInfo connectionInfo, WorkerNodeTracker zkNode) { setZkNode(getServerId(service, connectionInfo), zkNode); }
private void sendMessagesToServer( NeighborConnection<MessageTemplate, OperationsServiceMsg> server, Collection<OperationsServiceMsg> messages) { try { LOG.trace("Sending to server {} messages: {}", server.getId(), messages); server.sendMessages(messages); } catch (InterruptedException ex) { LOG.error("Error sending events to server: ", ex); } }
/** * Create connection and send messages. * * @param info is information about connection * @param msgs <code>Collection</code> of messages */ public void sendMessages(ConnectionInfo info, Collection<V> msgs) { NeighborConnection<T, V> neighbor = neigbors.get(getServerId(info)); if (neighbor != null) { try { neighbor.sendMessages(msgs); } catch (InterruptedException ex) { LOG.error("Failed to send message to {}", neighbor.getId()); throw new RuntimeException(ex); } } else { LOG.warn("Can't find server for id {}", getServerId(info)); } }
private void addOpsServer(OperationsNodeInfo opServer) { LOG.trace("[{}] Building id for {}", zkId, opServer.getConnectionInfo()); String opId = getServerId(serviceType, opServer.getConnectionInfo()); if (!zkId.equals(opId)) { LOG.trace("Adding {} to {}", opId, neigbors); neigbors.putIfAbsent(opId, new NeighborConnection<T, V>(opServer.getConnectionInfo(), maxNumberNeighborConnections, template)); neigbors.get(opId).start(); LOG.info("Operations server {} added/updated to {} Neighbors list. Now {} neighbors", opId, zkId, neigbors.size()); } } }
@Override public void onNodeRemoved(OperationsNodeInfo nodeInfo) { String opId = getServerId(nodeInfo.getConnectionInfo()); if (!zkId.equals(opId)) { NeighborConnection<T, V> connection = neigbors.remove(opId); if (connection != null) { connection.shutdown(); } LOG.info("Operations server {} removed to {} Neighbors list ({}). Now {} neighbors", opId, neigbors.size()); } } });
@Override public void sendUserRouteInfo( org.kaaproject.kaa.server.operations.service.event.UserRouteInfo routeInfo) { LOG.debug("EventService: sendUserRouteInfo()....."); List<NeighborConnection<MessageTemplate, Message>> servers = neighbors.getNeighbors(); UserRouteInfo userRoute = new UserRouteInfo(routeInfo.getUserId(), routeInfo.getTenantId(), id, transformUpdateType(routeInfo.getRouteOperation())); List<Message> messages = packMessage(userRoute); for (NeighborConnection<MessageTemplate, Message> server : servers) { LOG.debug("Send UserRouteInfo {} to neighbor {}....", userRoute, server.getId()); sendMessagesToServer(server, messages); } }
@Override public void shutdown() { LOG.info("Cluster Service shutdown()...."); neighbors.shutdown(); }
public void brodcastMessage(V msg) { brodcastMessages(Collections.singleton(msg)); }
public void sendMessage(ConnectionInfo info, V msg) { sendMessages(info, Collections.singleton(msg)); }
private void sendMessagesToServer(List<Message> messages, String serverId) { NeighborConnection<MessageTemplate, Message> server = neighbors.getNeghborConnection(serverId); if (server == null) { LOG.debug("specified server {} not found in neighbors list", serverId); notifyListenersOnServerProblem(serverId); return; } sendMessagesToServer(server, messages); }
@Override public void sendRouteInfo(Collection<RouteInfo> routeInfos, String... serverIdList) { List<EventRoute> routes = transformEventRouteFromRouteInfoCollection(routeInfos); String[] listServers = serverIdList; if (listServers == null || listServers.length <= 0) { List<NeighborConnection<MessageTemplate, Message>> servers = neighbors.getNeighbors(); listServers = servers.toArray(new String[servers.size()]); } for (String serverId : listServers) { sendMessagesToServer(packMessage(routes), serverId); } }
private void sendMessagesToServer(NeighborConnection<MessageTemplate, Message> server, List<Message> messages) { try { LOG.trace("Sending to server {} messages: {}", server.getId(), messages); server.sendMessages(messages); } catch (InterruptedException ex) { LOG.error("Error sending events to server: ", ex); notifyListenersOnServerProblem(server.getId()); } }
/** * Create new instance of <code>NeighborConnection</code>. * * @param connectionInfo is connection info * @param maxNumberConnection os max number connection * @param socketTimeout is socket timeout * @param template is template */ public NeighborConnection(ConnectionInfo connectionInfo, int maxNumberConnection, long socketTimeout, T template) { this.connectionInfo = connectionInfo; this.maxNumberConnection = maxNumberConnection; this.socketTimeout = socketTimeout; this.template = template; this.id = Neighbors.getServerId(connectionInfo); }
@Override public void shutdown() { LOG.info("Event Service shutdown()...."); listeners.clear(); neighbors.shutdown(); }
@Override public String getUserNode(String userId) { OperationsNodeInfo info = resolver.getNode(userId); if (info != null) { return Neighbors.getServerId(info.getConnectionInfo()); } return null; }
/** * Bean destroy-method. */ @PreDestroy public void onStop() { if (neighbors != null) { LOG.info("Shutdown of control service neighbors started!"); neighbors.shutdown(); LOG.info("Shutdown of control service neighbors complete!"); } }
/** * bean destroy method. */ @PreDestroy public void onStop() { if (neighbors != null) { LOG.info("Shutdown of control service neighbors started!"); neighbors.shutdown(); LOG.info("Shutdown of control service neighbors complete!"); } }
/** * Shutdown of control service neighbors. */ @PreDestroy public void onStop() { if (neighbors != null) { LOG.info("Shutdown of control service neighbors started!"); neighbors.shutdown(); LOG.info("Shutdown of control service neighbors complete!"); } }