]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
check_new_interval must compare old acting with old osdmap
authorLoic Dachary <loic@dachary.org>
Sun, 28 Jul 2013 11:50:43 +0000 (13:50 +0200)
committerSamuel Just <sam.just@inktank.com>
Mon, 29 Jul 2013 19:49:25 +0000 (12:49 -0700)
commitee9f04c5f8674bc2e8e6c5d92e9193d904215cb5
treea75fec7289f9ff2a526e6ac702254d767af8bac8
parent1f13d8ac5b879134942cac2f5aca00669f24581f
check_new_interval must compare old acting with old osdmap

When trying to establish if the old acting set is either empty or
smaller than the min_size of the osdmap,
pg_interval_t::check_new_interval compares with the min_size of the
new osdmap. Since the goal is to try to determine if the previous
interval may have been writeable, it should not enter the if when
there were not enough osds in the acting set ( i.e. < min_size ). But
it may enter it anyway if min_size was decremented in the new osdmap.

A complete set of unit tests were added to cover the logic of
check_new_interval. The parameters are prepared to describe a
situation where the function returns false (i.e. no new
interval). Each case is described in a separate bloc that introduces
the minimal changes to demonstrate the intended test case.

Because a number of cases have the same output while implementing a
different logic, the debug output is parsed to differentiate between them.

A test case demonstrating the problem ( check_new_interval must
compare old acting with old osdmap ) is added, with a link to the bug
number for future reference. The problem is fixed. The text of two
debug messages are slightly changed to make the maintenance of the
test that match them easier.

http://tracker.ceph.com/issues/5780 refs #5780

Signed-off-by: Loic Dachary <loic@dachary.org>
Reviewed-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
src/osd/osd_types.cc
src/test/test_osd_types.cc