mirror of
https://github.com/ceph/ceph
synced 2025-01-20 10:01:45 +00:00
osd/PG: caluculate acting by comparing with oldest log entry of auth
In GetLog, we will request logs back to the min last_update over our acting_backfill set, which will result in our log being extended as far backwards as necessary to pick up any peers which can be log recovered by auth_log_shard's log. Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
This commit is contained in:
parent
5fc46a619a
commit
29fc326861
@ -1237,6 +1237,8 @@ void PG::calc_replicated_acting(
|
||||
|
||||
// select replicas that have log contiguity with primary.
|
||||
// prefer up, then acting, then any peer_info osds
|
||||
eversion_t oldest_auth_log_entry =
|
||||
std::min(primary->second.log_tail, auth_log_shard->second.log_tail);
|
||||
for (vector<int>::const_iterator i = up.begin();
|
||||
i != up.end();
|
||||
++i) {
|
||||
@ -1245,9 +1247,7 @@ void PG::calc_replicated_acting(
|
||||
continue;
|
||||
const pg_info_t &cur_info = all_info.find(up_cand)->second;
|
||||
if (cur_info.is_incomplete() ||
|
||||
cur_info.last_update < MIN(
|
||||
primary->second.log_tail,
|
||||
auth_log_shard->second.log_tail)) {
|
||||
cur_info.last_update < oldest_auth_log_entry) {
|
||||
/* We include auth_log_shard->second.log_tail because in GetLog,
|
||||
* we will request logs back to the min last_update over our
|
||||
* acting_backfill set, which will result in our log being extended
|
||||
@ -1275,13 +1275,13 @@ void PG::calc_replicated_acting(
|
||||
// skip up osds we already considered above
|
||||
if (acting_cand == primary->first)
|
||||
continue;
|
||||
vector<int>::const_iterator up_it = find(up.begin(), up.end(), acting_cand.osd);
|
||||
vector<int>::const_iterator up_it = find(up.begin(), up.end(), *i);
|
||||
if (up_it != up.end())
|
||||
continue;
|
||||
|
||||
const pg_info_t &cur_info = all_info.find(acting_cand)->second;
|
||||
if (cur_info.is_incomplete() ||
|
||||
cur_info.last_update < primary->second.log_tail) {
|
||||
cur_info.last_update < oldest_auth_log_entry) {
|
||||
ss << " shard " << acting_cand << " (acting) REJECTED "
|
||||
<< cur_info << std::endl;
|
||||
} else {
|
||||
@ -1314,7 +1314,7 @@ void PG::calc_replicated_acting(
|
||||
continue;
|
||||
|
||||
if (i->second.is_incomplete() ||
|
||||
i->second.last_update < primary->second.log_tail) {
|
||||
i->second.last_update < oldest_auth_log_entry) {
|
||||
ss << " shard " << i->first << " (stray) REJECTED "
|
||||
<< i->second << std::endl;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user