Also: fix return to std::string. A string_view is not a thread-safe return.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
warn_interval_multiplier = 0;
}
- virtual std::string_view state_string() const {
+ std::string state_string() const {
std::lock_guard l(lock);
- return events.empty() ? std::string_view() : std::string_view(events.rbegin()->str);
+ return _get_state_string();
}
void dump(utime_t now, ceph::Formatter *f) const;
friend void intrusive_ptr_release(TrackedOp *o) {
o->put();
}
+
+protected:
+ virtual std::string _get_state_string() const {
+ return events.empty() ? std::string() : std::string(events.rbegin()->str);
+ }
};
void MDRequestImpl::_dump(Formatter *f) const
{
- f->dump_string("flag_point", state_string());
+ f->dump_string("flag_point", _get_state_string());
f->dump_stream("reqid") << reqid;
{
msg_lock.lock();
return latest_flag_point;
}
- std::string_view state_string() const override {
+ std::string _get_state_string() const override {
switch(latest_flag_point) {
case flag_queued_for_pg: return "queued for pg";
case flag_reached_pg: return "reached pg";