From e614a98543a518aea7080f8e66b95338d5f0fe5b Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sat, 23 May 2020 15:38:40 +0300 Subject: [PATCH] Add a sad FIXME :-) --- osd.cpp | 1 + osd_primary_subops.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/osd.cpp b/osd.cpp index 83740c99..7ef4cc40 100644 --- a/osd.cpp +++ b/osd.cpp @@ -401,6 +401,7 @@ void osd_t::cancel_op(osd_op_t *op) void osd_t::stop_client(int peer_fd) { + // FIXME Fix the bug where sometimes a dead peer is undetected which leads to PG DEGRADED|HAS_INCOMPLETE! auto it = clients.find(peer_fd); if (it == clients.end()) { diff --git a/osd_primary_subops.cpp b/osd_primary_subops.cpp index 8bdcdce9..a3cdcd0f 100644 --- a/osd_primary_subops.cpp +++ b/osd_primary_subops.cpp @@ -247,7 +247,11 @@ void osd_t::handle_primary_subop(uint64_t opcode, osd_op_t *cur_op, int retval, { if (op_data->fact_ver != 0 && op_data->fact_ver != version) { - throw std::runtime_error("different fact_versions returned from subops: "+std::to_string(version)+" vs "+std::to_string(op_data->fact_ver)); + // FIXME There is still a bug that leads to this exception sometimes :-(( + throw std::runtime_error( + "different fact_versions returned from "+std::string(osd_op_names[opcode])+ + " subops: "+std::to_string(version)+" vs "+std::to_string(op_data->fact_ver) + ); } op_data->fact_ver = version; }