]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mon/PGMonitor: store PGMap directly in store, bypassing PaxosService stash_full
authorSage Weil <sage@inktank.com>
Tue, 25 Jun 2013 19:01:53 +0000 (12:01 -0700)
committerSage Weil <sage@inktank.com>
Wed, 26 Jun 2013 04:25:04 +0000 (21:25 -0700)
commit2d2aa00ed356228042c7765d4c2335e77ca1f46f
tree9d519d9ec366a4d8637e93337119b42f870ea1d5
parentc8f793694cf9326d55d611bc8c1a0bd68a6830dc
mon/PGMonitor: store PGMap directly in store, bypassing PaxosService stash_full

Instead of encoding incrementals and periodically dumping the whole encoded
PGMap, instead store everything in a range of keys, and update them
between versions using transactions.  The per-version values are now
breadcrumbs indicating which keys were dirtied so they can be refreshed
via update_from_paxos().

This has several benefits:
 - we avoid every encoding the entire PGMap
 - we avoid dumping that blob into leveldb keys
 - we limit the amount of data living in forward-moving keys, which leveldb
   has a hard time compacting away
 - pgmap data instead lives over a fixed range of keys, which leveldb
   excels at
 - we only keep the latest copy of the PGMap (which is all we care about)

Bump the internal monitor protocol version.

Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/Monitor.h
src/mon/PGMap.cc
src/mon/PGMap.h
src/mon/PGMonitor.cc
src/mon/PGMonitor.h
src/mon/PaxosService.h