Skip to content

Commit 8debaf5

Browse files
committed
common/TrackedOp: do not count the ops marked as nowarn
If an op is marked as nowarn then it won't be counted as the slow requests, but currently it will count the initiated time when iterating the inflight ops. For example: [WRN] : 1 slow requests, 1 included below; oldest blocked for > 38.764892 secs [WRN] : slow request 33.875059 seconds old, received at 2024-06-17T14:14:34.228261+0000: client_request(client.78109915:11369251 mkdir #0x1008ecedea2/chk-89588 2024-06-17T14:14:34.097825+0000 caller_uid=1002960000, caller_gid=0{0,1002960000,}) currently failed to wrlock, waiting The oldest blocked request is 38.764892 old, but the oldest slow request reported is 33.875059 old. Fixes: commit e4160d7 ("mds: don't report slow request for blocked filelock request") Fixes: https://tracker.ceph.com/issues/66557 Signed-off-by: Xiubo Li <[email protected]>
1 parent 959f007 commit 8debaf5

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/common/TrackedOp.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,15 @@ bool OpTracker::visit_ops_in_flight(utime_t* oldest_secs,
339339
for (const auto sdata : sharded_in_flight_list) {
340340
ceph_assert(sdata);
341341
std::lock_guard locker(sdata->ops_in_flight_lock_sharded);
342-
if (!sdata->ops_in_flight_sharded.empty()) {
343-
utime_t oldest_op_tmp =
344-
sdata->ops_in_flight_sharded.front().get_initiated();
342+
for (auto& op : sdata->ops_in_flight_sharded) {
343+
if (!op.warn_interval_multiplier || op.is_continuous())
344+
continue;
345+
346+
utime_t oldest_op_tmp = op.get_initiated();
345347
if (oldest_op_tmp < oldest_op) {
346348
oldest_op = oldest_op_tmp;
347349
}
350+
break;
348351
}
349352
std::transform(std::begin(sdata->ops_in_flight_sharded),
350353
std::end(sdata->ops_in_flight_sharded),

0 commit comments

Comments
 (0)