An error coming in after `maybe_cleanup()` is called could trigger it
again. Add a flag to prevent that.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
bool finished = false;
bs::error_code res;
bufferlist rbl;
+ bool cleaned = false;
NotifyHandler(asio::io_context& ioc,
Objecter* objecter,
// Should be called from strand.
void maybe_cleanup(bs::error_code ec) {
+ if (cleaned) {
+ return;
+ }
if (!res && ec)
res = ec;
if ((acked && finished) || res) {
+ cleaned = true;
objecter->linger_cancel(op.get());
ceph_assert(c);
bc::flat_map<std::pair<uint64_t, uint64_t>, buffer::list> reply_map;