15 -> nuraft::ptr<nuraft::buffer> {
16 assert(log_idx == m_last_committed_idx + 1);
17 m_last_committed_idx = log_idx;
23 case command::prepare: {
26 auto res = m_state.m_prepare_txs.emplace(
27 comm.m_dtx_id.value(),
28 nuraft::buffer::copy(data));
34 m_logger->fatal(
"Duplicate prepare for dtx",
39 case command::commit: {
41 auto res = m_state.m_prepare_txs.erase(comm.m_dtx_id.value());
46 m_logger->fatal(
"Prepare not found for commit dtx",
50 m_state.m_commit_txs.emplace(comm.m_dtx_id.value(),
51 nuraft::buffer::copy(data));
55 case command::discard: {
57 auto res = m_state.m_commit_txs.erase(comm.m_dtx_id.value());
61 m_logger->fatal(
"Commit not found for discard dtx",
65 m_state.m_discard_txs.emplace(comm.m_dtx_id.value());
70 auto res = m_state.m_discard_txs.erase(comm.m_dtx_id.value());
74 m_logger->fatal(
"Discard not found for done dtx",
87 assert(ser.end_of_buffer());