mirror of
https://github.com/ceph/ceph
synced 2025-03-11 02:39:05 +00:00
Ceph is a distributed object, block, and file storage platform
We can learn either an uncommitted or committed value during the collect/last recovery phase. For the committed values, we need to remember each peer's first/last_committed and share only at the end to avoid a situation like: - mon.1 has same last_committed as us - mon.2 has newer last_commited, we save it - mon.3 has same last_commited as mon.1, we share new value - done... but mon.1 never got mon.2's newer commit. Instead, save the commit sharing until the collect process completes, so we know that any committed value learned from anyone is shared with everyone who needs it. This fixes a crash like mon/Paxos.cc: In function 'void Paxos::handle_begin(MMonPaxos*)', in thread '7fd91192c700' mon/Paxos.cc: 400: FAILED assert(begin->last_committed == last_committed) ceph version 0.38-208-g9aabd39 (commit:9aabd3982cceb7e8489412b4bfbb4c2387880de2) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x76) [0x72454e] 2: (Paxos::handle_begin(MMonPaxos*)+0x363) [0x6499ef] 3: (Paxos::dispatch(PaxosServiceMessage*)+0x2b4) [0x64db2c] 4: (Monitor::_ms_dispatch(Message*)+0xdc6) [0x6205c2] 5: (Monitor::ms_dispatch(Message*)+0x3a) [0x62831a] 6: (Messenger::ms_deliver_dispatch(Message*)+0x63) [0x7d1f31] 7: (SimpleMessenger::dispatch_entry()+0x7c2) [0x7bb786] 8: (SimpleMessenger::DispatchThread::entry()+0x2c) [0x6070fa] 9: (Thread::_entry_func(void*)+0x23) [0x6f3f69] 10: (()+0x7971) [0x7fd9153a1971] 11: (clone()+0x6d) [0x7fd913c3092d] Signed-off-by: Sage Weil <sage@newdream.net> |
||
---|---|---|
admin | ||
debian | ||
doc | ||
fusetrace | ||
keys | ||
man | ||
qa | ||
src | ||
udev | ||
wireshark | ||
.gitignore | ||
AUTHORS | ||
autogen.sh | ||
ceph.spec.in | ||
ChangeLog | ||
CodingStyle | ||
configure.ac | ||
COPYING | ||
do_autogen.sh | ||
Doxyfile | ||
INSTALL | ||
Makefile.am | ||
NEWS | ||
README | ||
RELEASE_CHECKLIST | ||
SubmittingPatches |
Ceph - a scalable distributed storage system ----------------------------------------- Please see http://ceph.newdream.net/ for current info. ---- To build the server daemons, and FUSE client, $ ./autogen.sh $ ./configure $ make (Note that the FUSE client will only be built if libfuse is present.) ---- A quick summary of binaries that will be built in src/ daemons: ceph-mon -- monitor daemon. handles cluster state and configuration information. ceph-osd -- storage daemon. stores objects on a given block device. ceph-mds -- metadata daemon. handles file system namespace. ceph-fuse -- fuse client. tools: ceph -- send management commands to the monitor cluster. rados -- interact with the object store rbd -- manipulate rados block device images monmaptool -- create/edit mon map osdmaptool -- create/edit osd map crushtool -- create/edit crush map scripts: mkcephfs -- cluster mkfs tool init-ceph -- init.d start/stop script