]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix incorrect l_pq_executing_ops statistics when meet an invalid item in purge... 25560/head
authorTang Junhui <tangjunhui@sangfor.com>
Fri, 23 Nov 2018 02:04:40 +0000 (10:04 +0800)
committerNathan Cutler <ncutler@suse.com>
Fri, 14 Dec 2018 10:24:42 +0000 (11:24 +0100)
l_pq_executing_ops should subtract the ops we added previous
in the condition we meet an invalid item in the purge queue,
otherwise the statistics would always show some ops
in l_pq_executing_ops.

Signed-off-by: Junhui Tang <tangjunhui@sangfor.com.cn>
Fixes: http://tracker.ceph.com/issues/37567
(cherry picked from commit ca61ce4485a56dead04a31e47bd1093217d1f222)

src/mds/PurgeQueue.cc

index fa5d43f6229f584c25e935b067c05aac15dd57a8..e8c32f171743b4f293a9b78a0282502b2cf3b441 100644 (file)
@@ -419,7 +419,8 @@ void PurgeQueue::_execute_item(
 
   in_flight[expire_to] = item;
   logger->set(l_pq_executing, in_flight.size());
-  ops_in_flight += _calculate_ops(item);
+  auto ops = _calculate_ops(item);
+  ops_in_flight += ops;
   logger->set(l_pq_executing_ops, ops_in_flight);
 
   SnapContext nullsnapc;
@@ -486,6 +487,8 @@ void PurgeQueue::_execute_item(
   } else {
     derr << "Invalid item (action=" << item.action << ") in purge queue, "
             "dropping it" << dendl;
+    ops_in_flight -= ops;
+    logger->set(l_pq_executing_ops, ops_in_flight);
     in_flight.erase(expire_to);
     logger->set(l_pq_executing, in_flight.size());
     return;