]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/mgr/client.cc
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / crimson / mgr / client.cc
index 5aa8a88ba214a7eb59ba7734411264321b662ed6..169915c9eb3b2777b26610075bada9bdec2f8b00 100644 (file)
@@ -65,13 +65,18 @@ Client::ms_dispatch(crimson::net::ConnectionRef conn, MessageRef m)
   return (dispatched ? std::make_optional(seastar::now()) : std::nullopt);
 }
 
-void Client::ms_handle_connect(crimson::net::ConnectionRef c)
+void Client::ms_handle_connect(
+    crimson::net::ConnectionRef c,
+    seastar::shard_id prv_shard)
 {
+  ceph_assert_always(prv_shard == seastar::this_shard_id());
   gate.dispatch_in_background(__func__, *this, [this, c] {
     if (conn == c) {
       // ask for the mgrconfigure message
-      auto m = ceph::make_message<MMgrOpen>();
+      auto m = crimson::make_message<MMgrOpen>();
       m->daemon_name = local_conf()->name.get_id();
+      local_conf().get_config_bl(0, &m->config_bl, &last_config_bl_version);
+      local_conf().get_defaults_bl(&m->config_defaults_bl);
       return conn->send(std::move(m));
     } else {
       return seastar::now();
@@ -152,9 +157,14 @@ seastar::future<> Client::handle_mgr_conf(crimson::net::ConnectionRef,
 void Client::report()
 {
   gate.dispatch_in_background(__func__, *this, [this] {
-    assert(conn);
-    auto pg_stats = with_stats.get_stats();
-    return conn->send(std::move(pg_stats));
+    if (!conn) {
+      logger().warn("report: no conn available; raport skipped");
+      return seastar::now();
+    }
+    return with_stats.get_stats(
+    ).then([this](auto &&pg_stats) {
+      return conn->send(std::move(pg_stats));
+    });
   });
 }