in ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java [490:522]
public CompletableFuture<Message> applyTransaction(TransactionContext trx) {
try {
checkInitialization();
final LogEntryProto entry = trx.getLogEntry();
LogServiceRequestProto logServiceRequestProto =
LogServiceRequestProto.parseFrom(entry.getStateMachineLogEntry().getLogData());
switch (logServiceRequestProto.getRequestCase()) {
case CHANGESTATE:
return recordTime(getCloseLogTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processChangeState(logServiceRequestProto);
}});
case APPENDREQUEST:
return recordTime(appendRequestTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processAppendRequest(trx, logServiceRequestProto);
}});
case SYNCREQUEST:
return recordTime(syncRequesTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processSyncRequest(trx, logServiceRequestProto);
}});
case ARCHIVELOG:
return updateArchiveLogInfo(logServiceRequestProto);
default:
//TODO
return null;
}
} catch (IOException e) {
// TODO exception handling
throw new RuntimeException(e);
}
}