Search in sources :

Example 1 with GroupListReply

use of org.apache.ratis.protocol.GroupListReply in project incubator-ratis by apache.

the class NettyRpcService method handle.

RaftNettyServerReplyProto handle(RaftNettyServerRequestProto proto) {
    RaftRpcRequestProto rpcRequest = null;
    try {
        switch(proto.getRaftNettyServerRequestCase()) {
            case REQUESTVOTEREQUEST:
                final RequestVoteRequestProto request = proto.getRequestVoteRequest();
                rpcRequest = request.getServerRequest();
                final RequestVoteReplyProto reply = server.requestVote(request);
                return RaftNettyServerReplyProto.newBuilder().setRequestVoteReply(reply).build();
            case TRANSFERLEADERSHIPREQUEST:
                final TransferLeadershipRequestProto transferLeadershipRequest = proto.getTransferLeadershipRequest();
                rpcRequest = transferLeadershipRequest.getRpcRequest();
                final RaftClientReply transferLeadershipReply = server.transferLeadership(ClientProtoUtils.toTransferLeadershipRequest(transferLeadershipRequest));
                return RaftNettyServerReplyProto.newBuilder().setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(transferLeadershipReply)).build();
            case STARTLEADERELECTIONREQUEST:
                final StartLeaderElectionRequestProto startLeaderElectionRequest = proto.getStartLeaderElectionRequest();
                rpcRequest = startLeaderElectionRequest.getServerRequest();
                final StartLeaderElectionReplyProto startLeaderElectionReply = server.startLeaderElection(startLeaderElectionRequest);
                return RaftNettyServerReplyProto.newBuilder().setStartLeaderElectionReply(startLeaderElectionReply).build();
            case SNAPSHOTMANAGEMENTREQUEST:
                final SnapshotManagementRequestProto snapshotManagementRequest = proto.getSnapshotManagementRequest();
                rpcRequest = snapshotManagementRequest.getRpcRequest();
                final RaftClientReply snapshotManagementReply = server.snapshotManagement(ClientProtoUtils.toSnapshotManagementRequest(snapshotManagementRequest));
                return RaftNettyServerReplyProto.newBuilder().setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(snapshotManagementReply)).build();
            case LEADERELECTIONMANAGEMENTREQUEST:
                final LeaderElectionManagementRequestProto leaderElectionManagementRequest = proto.getLeaderElectionManagementRequest();
                rpcRequest = leaderElectionManagementRequest.getRpcRequest();
                final RaftClientReply leaderElectionManagementReply = server.leaderElectionManagement(ClientProtoUtils.toLeaderElectionManagementRequest(leaderElectionManagementRequest));
                return RaftNettyServerReplyProto.newBuilder().setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(leaderElectionManagementReply)).build();
            case APPENDENTRIESREQUEST:
                final AppendEntriesRequestProto appendEntriesRequest = proto.getAppendEntriesRequest();
                rpcRequest = appendEntriesRequest.getServerRequest();
                final AppendEntriesReplyProto appendEntriesReply = server.appendEntries(appendEntriesRequest);
                return RaftNettyServerReplyProto.newBuilder().setAppendEntriesReply(appendEntriesReply).build();
            case INSTALLSNAPSHOTREQUEST:
                final InstallSnapshotRequestProto installSnapshotRequest = proto.getInstallSnapshotRequest();
                rpcRequest = installSnapshotRequest.getServerRequest();
                final InstallSnapshotReplyProto installSnapshotReply = server.installSnapshot(installSnapshotRequest);
                return RaftNettyServerReplyProto.newBuilder().setInstallSnapshotReply(installSnapshotReply).build();
            case RAFTCLIENTREQUEST:
                final RaftClientRequestProto raftClientRequest = proto.getRaftClientRequest();
                rpcRequest = raftClientRequest.getRpcRequest();
                final RaftClientReply raftClientReply = server.submitClientRequest(ClientProtoUtils.toRaftClientRequest(raftClientRequest));
                return RaftNettyServerReplyProto.newBuilder().setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(raftClientReply)).build();
            case SETCONFIGURATIONREQUEST:
                final SetConfigurationRequestProto configurationRequest = proto.getSetConfigurationRequest();
                rpcRequest = configurationRequest.getRpcRequest();
                final RaftClientReply configurationReply = server.setConfiguration(ClientProtoUtils.toSetConfigurationRequest(configurationRequest));
                return RaftNettyServerReplyProto.newBuilder().setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(configurationReply)).build();
            case GROUPMANAGEMENTREQUEST:
                final GroupManagementRequestProto groupManagementRequest = proto.getGroupManagementRequest();
                rpcRequest = groupManagementRequest.getRpcRequest();
                final RaftClientReply groupManagementReply = server.groupManagement(ClientProtoUtils.toGroupManagementRequest(groupManagementRequest));
                return RaftNettyServerReplyProto.newBuilder().setRaftClientReply(ClientProtoUtils.toRaftClientReplyProto(groupManagementReply)).build();
            case GROUPLISTREQUEST:
                final GroupListRequestProto groupListRequest = proto.getGroupListRequest();
                rpcRequest = groupListRequest.getRpcRequest();
                final GroupListReply groupListReply = server.getGroupList(ClientProtoUtils.toGroupListRequest(groupListRequest));
                return RaftNettyServerReplyProto.newBuilder().setGroupListReply(ClientProtoUtils.toGroupListReplyProto(groupListReply)).build();
            case GROUPINFOREQUEST:
                final GroupInfoRequestProto groupInfoRequest = proto.getGroupInfoRequest();
                rpcRequest = groupInfoRequest.getRpcRequest();
                final GroupInfoReply groupInfoReply = server.getGroupInfo(ClientProtoUtils.toGroupInfoRequest(groupInfoRequest));
                return RaftNettyServerReplyProto.newBuilder().setGroupInfoReply(ClientProtoUtils.toGroupInfoReplyProto(groupInfoReply)).build();
            case RAFTNETTYSERVERREQUEST_NOT_SET:
                throw new IllegalArgumentException("Request case not set in proto: " + proto.getRaftNettyServerRequestCase());
            default:
                throw new UnsupportedOperationException("Request case not supported: " + proto.getRaftNettyServerRequestCase());
        }
    } catch (IOException ioe) {
        return toRaftNettyServerReplyProto(Objects.requireNonNull(rpcRequest, "rpcRequest = null"), ioe);
    }
}
Also used : GroupListReply(org.apache.ratis.protocol.GroupListReply) IOException(java.io.IOException) RaftClientReply(org.apache.ratis.protocol.RaftClientReply) GroupInfoReply(org.apache.ratis.protocol.GroupInfoReply)

Example 2 with GroupListReply

use of org.apache.ratis.protocol.GroupListReply in project incubator-ratis by apache.

the class GroupManagementImpl method list.

@Override
public GroupListReply list() throws IOException {
    final long callId = CallId.getAndIncrement();
    final RaftClientReply reply = client.io().sendRequestWithRetry(() -> new GroupListRequest(client.getId(), server, client.getGroupId(), callId));
    Preconditions.assertTrue(reply instanceof GroupListReply, () -> "Unexpected reply: " + reply);
    return (GroupListReply) reply;
}
Also used : GroupListRequest(org.apache.ratis.protocol.GroupListRequest) RaftClientReply(org.apache.ratis.protocol.RaftClientReply) GroupListReply(org.apache.ratis.protocol.GroupListReply)

Example 3 with GroupListReply

use of org.apache.ratis.protocol.GroupListReply in project incubator-ratis by apache.

the class GroupListCommand method run.

@Override
public int run(CommandLine cl) throws IOException {
    super.run(cl);
    final RaftPeerId peerId;
    final String address;
    if (cl.hasOption(PEER_ID_OPTION_NAME)) {
        peerId = RaftPeerId.getRaftPeerId(cl.getOptionValue(PEER_ID_OPTION_NAME));
        address = getRaftGroup().getPeer(peerId).getAddress();
    } else if (cl.hasOption(SERVER_ADDRESS_OPTION_NAME)) {
        address = cl.getOptionValue(SERVER_ADDRESS_OPTION_NAME);
        final InetSocketAddress serverAddress = parseInetSocketAddress(address);
        peerId = RaftUtils.getPeerId(serverAddress);
    } else {
        throw new IllegalArgumentException("Both " + PEER_ID_OPTION_NAME + " and " + SERVER_ADDRESS_OPTION_NAME + " options are missing.");
    }
    try (final RaftClient raftClient = RaftUtils.createClient(getRaftGroup())) {
        GroupListReply reply = raftClient.getGroupManagementApi(peerId).list();
        processReply(reply, () -> String.format("Failed to get group information of peerId %s (server %s)", peerId, address));
        printf(String.format("The peerId %s (server %s) is in %d groups, and the groupIds is: %s", peerId, address, reply.getGroupIds().size(), reply.getGroupIds()));
    }
    return 0;
}
Also used : InetSocketAddress(java.net.InetSocketAddress) GroupListReply(org.apache.ratis.protocol.GroupListReply) RaftPeerId(org.apache.ratis.protocol.RaftPeerId) RaftClient(org.apache.ratis.client.RaftClient)

Aggregations

GroupListReply (org.apache.ratis.protocol.GroupListReply)3 RaftClientReply (org.apache.ratis.protocol.RaftClientReply)2 IOException (java.io.IOException)1 InetSocketAddress (java.net.InetSocketAddress)1 RaftClient (org.apache.ratis.client.RaftClient)1 GroupInfoReply (org.apache.ratis.protocol.GroupInfoReply)1 GroupListRequest (org.apache.ratis.protocol.GroupListRequest)1 RaftPeerId (org.apache.ratis.protocol.RaftPeerId)1