Project

General

Profile

Feature #15751

Updated by Samuel Just about 8 years ago

Currently, when When the interval changes, an osd throws out essentially all soft state for but the pg.    That's handy, it reduces all interval changes to primary doesn't, the same blank slate process.    It is, however, pretty wasteful when the primary doesn't change to throw up the peer could remember infos and missing sets.    If we don't forget missings across the infos interval change and missing sets, we'd probably be able to avoid asking for anything in most of the queries (in some common cases (like when like a single node goes down).    Some work will need to be done.    For one thing, we probably want to try to reinject the infos and missings using a state machine event rather than just not clearing the maps.    That lets us keep the simplicity of nuking the soft state and explicitly refilling in the maps without actually having to ask the replicas for their information.    Currently, we always ask for log + missing.    I don't think that'll end up being a problem since we don't actually keep the logs around for now (this needs to be investigated and confirmed). 

 Two pieces: 
 1) Read through the code, come up with a design, create a branch with that design explained in doc/dev/peering.rst (or another file if that would be better) 
 2) Actually implement and test it. 

 We also need to be careful that this case is sufficiently well tested in both replicated and ec cases (I think it's actually fine with the existing suite, but it would be worth doing a run with the existing tests and spot checking a few marked down, all of them that the new fast path actually happens a few times.) them).

Back