Hi, Greg: Thanks for your reply! I think master can always know if a request has been finished or not no matter whether there is a Commit-logevent, because it has written a EUpdate logevent that records the unfinished request. Of course, we need to do commit, in which we clean up mdcache and trigger journal trim, but it seems we don't need to write a logevent. We can do commit just in memory. For example, if we remove writing a ESlaveUpdate::OP_COMMIT logevent on slave, when crash happens, master will know there is an unfinished request either by replaying its early logged EUpdate or reading from its cache, so it resends OP_FINISH to slave, then everything will go on. Similarly, if we remove writing a ECommitted logevent on master, when crash happens, master still knows there is an unfinished request and it will restart the process from the step of sending OP_FINISH to slave. What do you think? Sincerely -Xinying Gregory Farnum <gfarnum@xxxxxxxxxx> 于2020年4月15日周三 上午2:16写道: > > 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