From d7b620f9dc2dfbcdeae1f27cc25fd5ad79cd9d5f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 25 Sep 2015 13:52:53 -0700 Subject: [PATCH] ECBackend::handle_recovery_read_complete: do not expose the hash_info when getting the obc Aside from expose an ECBackend internal detail, it causes ReplicatedPG to cache the value causing trouble with WRITEFULL. Partially fixes: #12983 Signed-off-by: Samuel Just --- src/osd/ECBackend.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 558989756f9c4..d6b95a5abed61 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -383,7 +383,12 @@ void ECBackend::handle_recovery_read_complete( ++it) { it->second.rebuild(); } - op.obc = get_parent()->get_obc(hoid, op.xattrs); + // Need to remove ECUtil::get_hinfo_key() since it should not leak out + // of the backend (see bug #12983) + map sanitized_attrs(op.xattrs); + sanitized_attrs.erase(ECUtil::get_hinfo_key()); + op.obc = get_parent()->get_obc(hoid, sanitized_attrs); + assert(op.obc); op.recovery_info.size = op.obc->obs.oi.size; op.recovery_info.oi = op.obc->obs.oi; } -- 2.39.5