Search in sources :

Example 1 with JRaftException

use of io.dingodb.raft.error.JRaftException in project dingo by dingodb.

the class CliServiceImpl method getPeers.

private List<PeerId> getPeers(final String groupId, final Configuration conf, final boolean returnLearners, final boolean onlyGetAlive) {
    Requires.requireTrue(!StringUtils.isBlank(groupId), "Blank group id");
    Requires.requireNonNull(conf, "Null conf");
    final PeerId leaderId = new PeerId();
    final Status st = getLeader(groupId, conf, leaderId);
    if (!st.isOk()) {
        throw new IllegalStateException(st.getErrorMsg());
    }
    if (!this.cliClientService.connect(leaderId.getEndpoint())) {
        throw new IllegalStateException("Fail to init channel to leader " + leaderId);
    }
    final CliRequests.GetPeersRequest.Builder rb = // 
    CliRequests.GetPeersRequest.newBuilder().setGroupId(// 
    groupId).setLeaderId(// 
    leaderId.toString()).setOnlyAlive(onlyGetAlive);
    try {
        final Message result = this.cliClientService.getPeers(leaderId.getEndpoint(), rb.build(), null).get(this.cliOptions.getTimeoutMs() <= 0 ? this.cliOptions.getRpcDefaultTimeout() : this.cliOptions.getTimeoutMs(), TimeUnit.MILLISECONDS);
        if (result instanceof CliRequests.GetPeersResponse) {
            final CliRequests.GetPeersResponse resp = (CliRequests.GetPeersResponse) result;
            final List<PeerId> peerIdList = new ArrayList<>();
            final ProtocolStringList responsePeers = returnLearners ? resp.getLearnersList() : resp.getPeersList();
            for (final String peerIdStr : responsePeers) {
                final PeerId newPeer = new PeerId();
                newPeer.parse(peerIdStr);
                peerIdList.add(newPeer);
            }
            return peerIdList;
        } else {
            final RpcRequests.ErrorResponse resp = (RpcRequests.ErrorResponse) result;
            throw new JRaftException(resp.getErrorMsg());
        }
    } catch (final JRaftException e) {
        throw e;
    } catch (final Exception e) {
        throw new JRaftException(e);
    }
}
Also used : Status(io.dingodb.raft.Status) Message(com.google.protobuf.Message) JRaftException(io.dingodb.raft.error.JRaftException) ArrayList(java.util.ArrayList) RpcRequests(io.dingodb.raft.rpc.RpcRequests) ProtocolStringList(com.google.protobuf.ProtocolStringList) JRaftException(io.dingodb.raft.error.JRaftException) CliRequests(io.dingodb.raft.rpc.CliRequests) PeerId(io.dingodb.raft.entity.PeerId)

Aggregations

Message (com.google.protobuf.Message)1 ProtocolStringList (com.google.protobuf.ProtocolStringList)1 Status (io.dingodb.raft.Status)1 PeerId (io.dingodb.raft.entity.PeerId)1 JRaftException (io.dingodb.raft.error.JRaftException)1 CliRequests (io.dingodb.raft.rpc.CliRequests)1 RpcRequests (io.dingodb.raft.rpc.RpcRequests)1 ArrayList (java.util.ArrayList)1