ceph/doc/dev/osd_internals/pg.rst
Samuel Just 5e36acdb6f osd/: mechanically rename RecoveryMachine/State/Ctx to Peering*
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>
2019-05-01 11:22:11 -07:00

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.