summaryrefslogtreecommitdiffstats
path: root/src/ceph/doc/dev/osd_internals/pg.rst
blob: 405536396f1dfed5b9d3b740c69202ce6951d1a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
====
PG
====

Concepts
--------

*Peering Interval*
  See PG::start_peering_interval.
  See PG::acting_up_affected
  See PG::RecoveryState::Reset

  A peering interval is a maximal set of contiguous map epochs in which the
  up and acting sets did not change.  PG::RecoveryMachine represents a 
  transition from one interval to another as passing through
  RecoveryState::Reset.  On PG::RecoveryState::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::RecoveryState::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::RecoveryState::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.