Search in sources :

Example 1 with TransferLeadershipRequestProto

use of org.apache.ratis.proto.RaftProtos.TransferLeadershipRequestProto in project incubator-ratis by apache.

the class GrpcClientRpc method sendRequest.

@Override
public RaftClientReply sendRequest(RaftClientRequest request) throws IOException {
    final RaftPeerId serverId = request.getServerId();
    final GrpcClientProtocolClient proxy = getProxies().getProxy(serverId);
    if (request instanceof GroupManagementRequest) {
        final GroupManagementRequestProto proto = ClientProtoUtils.toGroupManagementRequestProto((GroupManagementRequest) request);
        return ClientProtoUtils.toRaftClientReply(proxy.groupAdd(proto));
    } else if (request instanceof SetConfigurationRequest) {
        final SetConfigurationRequestProto setConf = ClientProtoUtils.toSetConfigurationRequestProto((SetConfigurationRequest) request);
        return ClientProtoUtils.toRaftClientReply(proxy.setConfiguration(setConf));
    } else if (request instanceof GroupListRequest) {
        final GroupListRequestProto proto = ClientProtoUtils.toGroupListRequestProto((GroupListRequest) request);
        return ClientProtoUtils.toGroupListReply(proxy.groupList(proto));
    } else if (request instanceof GroupInfoRequest) {
        final GroupInfoRequestProto proto = ClientProtoUtils.toGroupInfoRequestProto((GroupInfoRequest) request);
        return ClientProtoUtils.toGroupInfoReply(proxy.groupInfo(proto));
    } else if (request instanceof TransferLeadershipRequest) {
        final TransferLeadershipRequestProto proto = ClientProtoUtils.toTransferLeadershipRequestProto((TransferLeadershipRequest) request);
        return ClientProtoUtils.toRaftClientReply(proxy.transferLeadership(proto));
    } else if (request instanceof SnapshotManagementRequest) {
        final SnapshotManagementRequestProto proto = ClientProtoUtils.toSnapshotManagementRequestProto((SnapshotManagementRequest) request);
        return ClientProtoUtils.toRaftClientReply(proxy.snapshotManagement(proto));
    } else if (request instanceof LeaderElectionManagementRequest) {
        final LeaderElectionManagementRequestProto proto = ClientProtoUtils.toLeaderElectionManagementRequestProto((LeaderElectionManagementRequest) request);
        return ClientProtoUtils.toRaftClientReply(proxy.leaderElectionManagement(proto));
    } else {
        final CompletableFuture<RaftClientReply> f = sendRequest(request, proxy);
        // TODO: timeout support
        try {
            return f.get();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            throw new InterruptedIOException("Interrupted while waiting for response of request " + request);
        } catch (ExecutionException e) {
            if (LOG.isTraceEnabled()) {
                LOG.trace(clientId + ": failed " + request, e);
            }
            throw IOUtils.toIOException(e);
        }
    }
}
Also used : InterruptedIOException(java.io.InterruptedIOException) GroupManagementRequestProto(org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto) LeaderElectionManagementRequestProto(org.apache.ratis.proto.RaftProtos.LeaderElectionManagementRequestProto) GroupInfoRequestProto(org.apache.ratis.proto.RaftProtos.GroupInfoRequestProto) SetConfigurationRequestProto(org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto) TransferLeadershipRequestProto(org.apache.ratis.proto.RaftProtos.TransferLeadershipRequestProto) GroupListRequestProto(org.apache.ratis.proto.RaftProtos.GroupListRequestProto) SnapshotManagementRequestProto(org.apache.ratis.proto.RaftProtos.SnapshotManagementRequestProto) ExecutionException(java.util.concurrent.ExecutionException)

Aggregations

InterruptedIOException (java.io.InterruptedIOException)1 ExecutionException (java.util.concurrent.ExecutionException)1 GroupInfoRequestProto (org.apache.ratis.proto.RaftProtos.GroupInfoRequestProto)1 GroupListRequestProto (org.apache.ratis.proto.RaftProtos.GroupListRequestProto)1 GroupManagementRequestProto (org.apache.ratis.proto.RaftProtos.GroupManagementRequestProto)1 LeaderElectionManagementRequestProto (org.apache.ratis.proto.RaftProtos.LeaderElectionManagementRequestProto)1 SetConfigurationRequestProto (org.apache.ratis.proto.RaftProtos.SetConfigurationRequestProto)1 SnapshotManagementRequestProto (org.apache.ratis.proto.RaftProtos.SnapshotManagementRequestProto)1 TransferLeadershipRequestProto (org.apache.ratis.proto.RaftProtos.TransferLeadershipRequestProto)1