On Sun, Apr 12, 2020 at 5:19 AM Xinying Song <songxinying.ftd@xxxxxxxxx> wrote: > > Hi, cephers: > What's the purpose of using LogEvent with empty metablob? > For example in link/unlink operation cross two active mds, > when slave receives OP_FINISH it will write an ESlaveUpdate::OP_COMMIT > to the journal, then > send OP_COMMITTED to master. When master receives OP_COMMITTED it will > write an ECommitted to the journal then allow previously logged > journal to be trimmed. > > Why are these two logevents necessary? > I guess they are originally used for a scene that crashes happen, > but in my opinion it seems not necessary. For example, > if cash happens, after failed mds are brought up again, in resolve > stage, master will resend OP_FINISH to slave, then things will > continue as expected. I don't remember the details of these transactions off the top of my head, but it sounds like you just answered your question: how would the master know it needs to tell the slave things are over or not, if it doesn't commit that it told the slave things are over? If we don't commit something indicating a finish, we'd need to remember the transaction forever, which would be bad. -Greg > > Could anyone give some tips on this doubt? > > Sincerely thanks! > _______________________________________________ > ceph-users mailing list -- ceph-users@xxxxxxx > To unsubscribe send an email to ceph-users-leave@xxxxxxx > _______________________________________________ ceph-users mailing list -- ceph-users@xxxxxxx To unsubscribe send an email to ceph-users-leave@xxxxxxx