Feature #15751
Faster Peering -- primary remember infos/missings across interval if the primary doesn't change
0%
Description
Currently, when the interval changes, an osd throws out essentially all soft state for the pg. That's handy, it reduces all interval changes to the same blank slate process. It is, however, pretty wasteful when the primary doesn't change to throw up the peer infos and missing sets. If we don't forget the infos and missing sets, we'd probably be able to avoid asking for anything in some common cases (like when a 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 of them that the new fast path actually happens a few times.)
History
#1 Updated by Samuel Just almost 8 years ago
- Description updated (diff)