Re: [ceph-users] Question about PGMonitor::waiting_for_finished_proposal

2017-06-01 Thread Joao Eduardo Luis

On 06/01/2017 05:35 AM, 许雪寒 wrote:

Hi, everyone.

Recently, I’m reading the source code of Monitor. I found that, in

PGMonitor::preprare_pg_stats() method, a callback C_Stats is put into
PGMonitor::waiting_for_finished_proposal. I wonder, if a previous PGMap
incremental is in PAXOS's proposeaccept phase at the moment C_Stats
is put into PGMonitor::waiting_for_finished_proposal, would this C_Stats
be called when that PGMap incremental's PAXOS procedure is complete and
PaxosService::_active() is invoked? If so, there exists the possibility
that a MPGStats request get responsed before going through the PAXOS
procedure.


Is this right? Thank you:-)


Much like the other PaxosServices, the PGMonitor will only handle 
requests with potential side-effects (i.e., updates) if the service is 
writeable.


A precondition on being writeable is not having a PGMonitor proposal 
currently in progress. Other proposals, from other PaxosServices, may be 
happening, but not from PGMonitor.


When your request reaches PGMonitor::prepare_pg_stats(), it is 
guaranteed (except in case of unexpected behavior) that the service is 
not currently undergoing a proposal.


This means that when we queue C_Stats waiting for a finished proposal, 
it will be called back upon once the next proposal finishes.


We may bundle other update requests to PGMonitor (much like what happens 
on other PaxosServices) into the same proposal. In which case, all the 
callbacks that were waiting for a finished proposal will be woken up 
once the proposal is finished.


So, to answer your question, no.

  -Joao

P.S.: If you are curious to know how the writeable decision is made, 
check out PaxosServices::dispatch().


___
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com


[ceph-users] Question about PGMonitor::waiting_for_finished_proposal

2017-05-31 Thread 许雪寒
Hi, everyone. 

Recently, I’m reading the source code of Monitor. I found that, in 
PGMonitor::preprare_pg_stats() method, a callback C_Stats is put into 
PGMonitor::waiting_for_finished_proposal. I wonder, if a previous PGMap 
incremental is in PAXOS's proposeaccept phase at the moment C_Stats is put 
into PGMonitor::waiting_for_finished_proposal, would this C_Stats be called 
when that PGMap incremental's PAXOS procedure is complete and 
PaxosService::_active() is invoked? If so, there exists the possibility that a 
MPGStats request get responsed before going through the PAXOS procedure.

Is this right? Thank you:-)
___
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com