private boolean isMemberInShard(int memberId, String shardId) { return config.getMember(memberId).getShardId().equals(shardId); }
stat = new ZookeeperStat(); stat.memberId = member.getMemberId(); stat.shardId = member.getShardId(); client.create().creatingParentContainersIfNeeded() .forPath(statPath, objectMapper.writeValueAsBytes(stat));
String curMasterShardId = config.getMember(status.masterId).getShardId();
if (masterId >= 0) { String shardId = gondola.getConfig().getMember(masterId).getShardId(); if (shardId.equals(gondola.getConfig().getMember(memberId).getShardId())) { throw new GondolaException(GondolaException.Code.SAME_SHARD, memberId, masterId, shardId);
/** * By calling this method, the connection's setSocket() method * will eventually get called when a socket connection is established to peerId. */ void reconnect() { if (retry) { logger.info("[{}-{}] Reconnecting socket {} to {}", gondola.getHostId(), memberId, socket, peerId); // If the remote member is not part of this member's shard, this member is assumed to be a slave Config config = gondola.getConfig(); boolean isSlave = config.getMember(memberId).getShardId() != config.getMember(peerId).getShardId(); // Initiate the connection only if this member id is // larger than the remote member or if this member is a // slave. Otherwise, it's assumed that the remote member will initiate the connection. boolean initiateCall = memberId > peerId || isSlave; new SocketCreator(initiateCall).start(); } }