mirror of
https://github.com/ceph/ceph
synced 2024-12-22 11:31:55 +00:00
5e36acdb6f
I'm going to extract this logic and reuse it in crimson. Recovery* has always been a confusing name as it implements neither log-based recovery nor backfill. Rather, it's mainly the buisiness logic for agreeing on an authoritative log and some ancillary things such as scrub/backfill reservation. $ for i in $(git grep -l 'RecoveryMachine'); do sed -i 's/RecoveryMachine/PeeringMachine/g' $i; done $ for i in $(git grep -l 'RecoveryState'); do sed -i 's/RecoveryState/PeeringState/g' $i; done $ for i in $(git grep -l 'RecoveryCtx'); do sed -i 's/RecoveryCtx/PeeringCtx/g' $i; done Signed-off-by: Samuel Just <sjust@redhat.com>
32 lines
1.1 KiB
ReStructuredText
32 lines
1.1 KiB
ReStructuredText
====
|
|
PG
|
|
====
|
|
|
|
Concepts
|
|
--------
|
|
|
|
*Peering Interval*
|
|
See PG::start_peering_interval.
|
|
See PG::acting_up_affected
|
|
See PG::PeeringState::Reset
|
|
|
|
A peering interval is a maximal set of contiguous map epochs in which the
|
|
up and acting sets did not change. PG::PeeringMachine represents a
|
|
transition from one interval to another as passing through
|
|
PeeringState::Reset. On PG::PeeringState::AdvMap PG::acting_up_affected can
|
|
cause the pg to transition to Reset.
|
|
|
|
|
|
Peering Details and Gotchas
|
|
---------------------------
|
|
For an overview of peering, see `Peering <../../peering>`_.
|
|
|
|
* PG::flushed defaults to false and is set to false in
|
|
PG::start_peering_interval. Upon transitioning to PG::PeeringState::Started
|
|
we send a transaction through the pg op sequencer which, upon complete,
|
|
sends a FlushedEvt which sets flushed to true. The primary cannot go
|
|
active until this happens (See PG::PeeringState::WaitFlushedPeering).
|
|
Replicas can go active but cannot serve ops (writes or reads).
|
|
This is necessary because we cannot read our ondisk state until unstable
|
|
transactions from the previous interval have cleared.
|