From 488a2a9a725ff428a9511946c43e971866350c1a Mon Sep 17 00:00:00 2001 From: cuixf Date: Sun, 10 Jun 2018 22:06:42 -0400 Subject: [PATCH] osd: fix memory leak at EC read Clean the in_progess and shard_to_read_map when the read op is complete, to prevent memory leak and primary osd crash. Signed-off-by: xiaofei cui --- src/osd/ECBackend.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 151e35e414168..1bf6464f5f9bc 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -1257,6 +1257,13 @@ void ECBackend::complete_read_op(ReadOp &rop, RecoveryMessages *m) reqiter->second.cb = nullptr; } } + // if the read op is over. clean all the data of this tid. + for (set::iterator iter = rop.in_progress.begin(); + iter != rop.in_progress.end(); + iter++) { + shard_to_read_map[*iter].erase(rop.tid); + } + rop.in_progress.clear(); tid_to_read_map.erase(rop.tid); } -- 2.47.3