Cancel outbound operations only in the osd_client_t destructor

This is required to prevent disconnected peers from sometimes receiving messages
suited for other peers - stop_client was freeing the operations even though they
were still references in the io_uring requests in progress. This was leading to
OSDs sometimes receiving garbage and "broken sequencing" errors in logs as the
memory was usually already reallocated for other operations
This commit is contained in:
Vitaliy Filippov
2025-06-05 02:09:41 +03:00
parent cd028612c8
commit 67071158bd
3 changed files with 27 additions and 33 deletions
+1
View File
@@ -99,6 +99,7 @@ struct osd_client_t
std::vector<osd_op_t*> zc_free_list;
~osd_client_t();
void cancel_ops();
};
struct osd_wanted_peer_t