]> git.feebdaed.xyz Git - 0xmirror/grpc.git/commitdiff
[channelz] Ensure ExecCtx is available for call combiner call (#41266)
authorCraig Tiller <ctiller@google.com>
Fri, 19 Dec 2025 21:51:17 +0000 (13:51 -0800)
committerCopybara-Service <copybara-worker@google.com>
Fri, 19 Dec 2025 21:53:35 +0000 (13:53 -0800)
Closes #41266

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/41266 from ctiller:exec_ctx_91237 c71a347c5045cf0372cb4a5795de6251b7fc461c
PiperOrigin-RevId: 846854179

src/core/lib/channel/promise_based_filter.cc

index 1fa1ce3de99fdf1874beb0e10c69a3c49be0a3bd..b8dcbe4776f2f5ce32ac9ce3a9684fce41afabe9 100644 (file)
@@ -156,14 +156,16 @@ std::string BaseCallData::LogTag() const {
 }
 
 void BaseCallData::AddData(channelz::DataSink sink) {
-  auto add = [sink, this](grpc_error_handle) mutable {
-    sink.AddData(elem_->filter->name.name(), ChannelzProperties());
-    GRPC_CALL_COMBINER_STOP(call_combiner(), "channelz_add_data");
-    GRPC_CALL_STACK_UNREF(call_stack_, "channelz_add_data");
-  };
-  GRPC_CALL_STACK_REF(call_stack_, "channelz_add_data");
-  GRPC_CALL_COMBINER_START(call_combiner_, NewClosure(std::move(add)),
-                           absl::OkStatus(), "channelz_add_data");
+  EnsureRunInExecCtx([this, sink = std::move(sink)]() {
+    auto add = [sink, this](grpc_error_handle) mutable {
+      sink.AddData(elem_->filter->name.name(), ChannelzProperties());
+      GRPC_CALL_COMBINER_STOP(call_combiner(), "channelz_add_data");
+      GRPC_CALL_STACK_UNREF(call_stack_, "channelz_add_data");
+    };
+    GRPC_CALL_STACK_REF(call_stack_, "channelz_add_data");
+    GRPC_CALL_COMBINER_START(call_combiner_, NewClosure(std::move(add)),
+                             absl::OkStatus(), "channelz_add_data");
+  });
 }
 
 channelz::PropertyList BaseCallData::ChannelzProperties() const {