We don't want messages in the OpTracker history hanging on to
message throttle.
Fixes: #14248
Backport: hammer, firefly
Signed-off-by: Samuel Just <sjust@redhat.com>
(cherry picked from commit
67be35cba7c384353b0b6d49284a4ead94c4152e)
Conflicts:
src/msg/Message.h (s/nullptr/0/ because C++98)
virtual ~Message() {
if (byte_throttler)
byte_throttler->put(payload.length() + middle.length() + data.length());
- if (msg_throttler)
- msg_throttler->put();
+ release_message_throttle();
/* call completion hooks (if any) */
if (completion_hook)
completion_hook->complete(0);
data.clear();
clear_buffers(); // let subclass drop buffers as well
}
+ void release_message_throttle() {
+ if (msg_throttler)
+ msg_throttler->put();
+ msg_throttler = 0; // nullptr
+ }
bool empty_payload() { return payload.length() == 0; }
bufferlist& get_payload() { return payload; }
void OpRequest::_unregistered() {
request->clear_data();
request->clear_payload();
+ request->release_message_throttle();
}
bool OpRequest::check_rmw(int flag) {