summaryrefslogtreecommitdiffstats
path: root/src/mds/Server.cc
diff options
context:
space:
mode:
authorXiubo Li <xiubli@localhost.localdomain>2024-04-17 09:24:10 +0200
committerXiubo Li <xiubli@redhat.com>2024-04-18 16:29:24 +0200
commit793ea12a2c7b03140331d40f028677f63cfc9de6 (patch)
tree64ce4aadbb2b93011130f6a0f35d091332904f12 /src/mds/Server.cc
parentMerge pull request #56962 from cbodley/wip-doc-rgw-reshard-config (diff)
downloadceph-793ea12a2c7b03140331d40f028677f63cfc9de6.tar.xz
ceph-793ea12a2c7b03140331d40f028677f63cfc9de6.zip
mds: find a new head for the batch ops when the head is dead
If the batch head request is already dead and then we need to choose a new batch head anyways and release the reference for the current batch head request. Else it will be reported as slow request. Fixes: https://tracker.ceph.com/issues/65536 Signed-off-by: Xiubo Li <xiubli@redhat.com>
Diffstat (limited to 'src/mds/Server.cc')
-rw-r--r--src/mds/Server.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mds/Server.cc b/src/mds/Server.cc
index 0bb30664ac5..14faeb3ecc9 100644
--- a/src/mds/Server.cc
+++ b/src/mds/Server.cc
@@ -2647,9 +2647,14 @@ void Server::dispatch_client_request(const MDRequestRef& mdr)
auto it = mdr->batch_op_map->find(mask);
auto new_batch_head = it->second->find_new_head();
if (!new_batch_head) {
- mdr->batch_op_map->erase(it);
- return;
+ mdr->batch_op_map->erase(it);
+ dout(10) << __func__ << ": mask '" << mask
+ << "' batch head is killed and there is no follower" << dendl;
+ return;
}
+ dout(10) << __func__ << ": mask '" << mask
+ << "' batch head is killed and queue a new one "
+ << *new_batch_head << dendl;
mds->finisher->queue(new C_MDS_RetryRequest(mdcache, new_batch_head));
return;
} else {