public TransactionContext applyTransactionSerial()

in ratis-logservice/src/main/java/org/apache/ratis/logservice/server/MetaStateMachine.java [131:183]


    public TransactionContext applyTransactionSerial(TransactionContext trx) throws InvalidProtocolBufferException {
        RaftProtos.LogEntryProto x = trx.getLogEntry();
        MetaSMRequestProto req = null;
        try {
            req = MetaSMRequestProto.parseFrom(x.getStateMachineLogEntry().getLogData());
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
            throw e;
        }
        switch (req.getTypeCase()) {
            case REGISTERREQUEST:
                LogServiceRegisterLogRequestProto r = req.getRegisterRequest();
                LogName logname = LogServiceProtoUtil.toLogName(r.getLogname());
                RaftGroup rg = MetaServiceProtoUtil.toRaftGroup(r.getRaftGroup());
                rg.getPeers().stream().forEach(raftPeer -> {
                    Set<LogName> logNames;
                    if(!peerLogs.containsKey(raftPeer)) {
                        logNames = new HashSet<>();
                        peerLogs.put(raftPeer, logNames);
                    } else {
                        logNames = peerLogs.get(raftPeer);
                    }
                    logNames.add(logname);

                });
                map.put(logname, rg);

                LOG.info("Log {} registered at {} with group {} ", logname, getId(), rg );
                break;
            case UNREGISTERREQUEST:
                LogServiceUnregisterLogRequestProto unregReq = req.getUnregisterRequest();
                logname = LogServiceProtoUtil.toLogName(unregReq.getLogname());
                map.remove(logname);
                break;
            case PINGREQUEST:
                LogServicePingRequestProto pingRequest = req.getPingRequest();
                RaftPeer peer = MetaServiceProtoUtil.toRaftPeer(pingRequest.getPeer());
                //If Set<RaftPeer> contains peer then do nothing as that's just heartbeat else add the peer to the set.
                if (!peers.contains(peer)) {
                    peers.add(peer);
                    avail.add(new PeerGroups(peer));
                    heartbeatInfo.put(peer,  System.currentTimeMillis());
                }
                break;
            case HEARTBEATREQUEST:
                MetaServiceProtos.LogServiceHeartbeatRequestProto heartbeatRequest = req.getHeartbeatRequest();
                RaftPeer heartbeatPeer = MetaServiceProtoUtil.toRaftPeer(heartbeatRequest.getPeer());
                heartbeatInfo.put(heartbeatPeer,  System.currentTimeMillis());
                break;
            default:
        }
        return super.applyTransactionSerial(trx);
    }