Do not wait for down OSDs during sync
Fixes a hang introduced in 0.5.11 in the non-immediate_commit modeallow-etcd-address-option
parent
818ae5d61d
commit
4a7365660d
|
@ -954,13 +954,14 @@ int cluster_client_t::continue_sync(cluster_op_t *op)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
// Check that all OSD connections are still alive
|
// Check that all OSD connections are still alive
|
||||||
for (auto sync_osd: dirty_osds)
|
for (auto do_it = dirty_osds.begin(); do_it != dirty_osds.end(); )
|
||||||
{
|
{
|
||||||
|
osd_num_t sync_osd = *do_it;
|
||||||
auto peer_it = msgr.osd_peer_fds.find(sync_osd);
|
auto peer_it = msgr.osd_peer_fds.find(sync_osd);
|
||||||
if (peer_it == msgr.osd_peer_fds.end())
|
if (peer_it == msgr.osd_peer_fds.end())
|
||||||
{
|
dirty_osds.erase(do_it++);
|
||||||
return 0;
|
else
|
||||||
}
|
do_it++;
|
||||||
}
|
}
|
||||||
// Post sync to affected OSDs
|
// Post sync to affected OSDs
|
||||||
for (auto & prev_op: dirty_buffers)
|
for (auto & prev_op: dirty_buffers)
|
||||||
|
|
Loading…
Reference in New Issue