/** * Checks if is master. * * @return true, if is master */ public boolean isMaster() { ControlNodeInfo serverInfo = getControlServerInfo(); if (currentNodeInfo != null && serverInfo != null) { String curHost = currentNodeInfo.getConnectionInfo().getThriftHost().toString(); int curPort = currentNodeInfo.getConnectionInfo().getThriftPort(); String masterHost = serverInfo.getConnectionInfo().getThriftHost().toString(); int masterPort = serverInfo.getConnectionInfo().getThriftPort(); return curHost.equals(masterHost) && curPort == masterPort; } else { return false; } }
/** * Start Zookeeper service. */ public void start() { if (getNodeConfig().isZkEnabled()) { LOG.info("Control service starting ZooKepper connection to {}", getNodeConfig().getZkHostPortList()); ControlNodeInfo nodeInfo = new ControlNodeInfo(); ConnectionInfo connectionInfo = new ConnectionInfo( getNodeConfig().getThriftHost(), getNodeConfig().getThriftPort(), null); nodeInfo.setConnectionInfo(connectionInfo); controlZkNode = new ControlNode(nodeInfo, zkClient); try { controlZkNode.start(); } catch (Exception ex) { if (getNodeConfig().isZkIgnoreErrors()) { LOG.info("Failed to register control in ZooKeeper", ex); } else { LOG.error("Failed to register control in ZooKeeper", ex); throw new RuntimeException(ex); // NOSONAR } } } }
@Override public ControlNodeInfo build() { try { ControlNodeInfo record = new ControlNodeInfo(); record.connectionInfo = fieldSetFlags()[0] ? this.connectionInfo : (org.kaaproject.kaa.server.common.zk.gen.ConnectionInfo) defaultValue(fields()[0]); record.operationsServerCount = fieldSetFlags()[1] ? this.operationsServerCount : (java.lang.Integer) defaultValue(fields()[1]); record.bootstrapServerCount = fieldSetFlags()[2] ? this.bootstrapServerCount : (java.lang.Integer) defaultValue(fields()[2]); return record; } catch (Exception e) { throw new org.apache.avro.AvroRuntimeException(e); } } }
/** * Check neighbors. */ private void checkNeighbors() { if (neighbors == null) { synchronized (zkLock) { if (neighbors == null) { neighbors = new Neighbors<>( KaaThriftService.OPERATIONS_SERVICE, new NeighborTemplate<OperationsServiceMsg>() { @Override public void process(Iface client, List<OperationsServiceMsg> messages) throws TException { OperationsServiceMsg.dispatch(client, messages); } @Override public void onServerError(String serverId, Exception ex) { LOG.error("Can't send configuration update to {}", serverId, ex); } }, neighborConnectionsSize); ControlNode zkNode = controlZkService.getControlZkNode(); neighbors.setZkNode( KaaThriftService.KAA_NODE_SERVICE, zkNode.getControlServerInfo().getConnectionInfo(), zkNode); } } } }