Revert "Precondition ChannelArgs with EventEngines (#31166)" (#31462)
This reverts commit 23c7e487794aea4f287caa4598cab757e359910c.
diff --git a/BUILD b/BUILD
index be97a52..135a5c0 100644
--- a/BUILD
+++ b/BUILD
@@ -1794,7 +1794,6 @@
"absl/status:statusor",
"absl/strings",
"absl/synchronization",
- "absl/types:optional",
"absl/memory",
"upb_lib",
"protobuf_headers",
@@ -2671,6 +2670,7 @@
"//src/core:channel_init",
"//src/core:channel_stack_type",
"//src/core:construct_destruct",
+ "//src/core:default_event_engine",
"//src/core:dual_ref_counted",
"//src/core:env",
"//src/core:gpr_atm",
diff --git a/src/core/BUILD b/src/core/BUILD
index 5641749..6676e57 100644
--- a/src/core/BUILD
+++ b/src/core/BUILD
@@ -1809,13 +1809,10 @@
],
external_deps = ["absl/functional:any_invocable"],
deps = [
- "channel_args",
- "channel_args_preconditioning",
"context",
"default_event_engine_factory",
"event_engine_trace",
"no_destruct",
- "//:config",
"//:event_engine_base_hdrs",
"//:gpr",
"//:grpc_trace",
@@ -2961,6 +2958,7 @@
"channel_init",
"channel_stack_type",
"closure",
+ "default_event_engine",
"exec_ctx_wakeup_scheduler",
"http2_errors",
"idle_filter_state",
@@ -3191,6 +3189,7 @@
"channel_fwd",
"channel_init",
"channel_stack_type",
+ "default_event_engine",
"gpr_atm",
"grpc_sockaddr",
"json",
@@ -3753,6 +3752,7 @@
language = "c++",
deps = [
"channel_args",
+ "default_event_engine",
"grpc_resolver_xds_header",
"json",
"json_args",
@@ -4077,6 +4077,7 @@
language = "c++",
deps = [
"channel_args",
+ "default_event_engine",
"grpc_lb_address_filtering",
"json",
"json_args",
diff --git a/src/core/ext/filters/channel_idle/channel_idle_filter.cc b/src/core/ext/filters/channel_idle/channel_idle_filter.cc
index 479953a..0ac7cf6 100644
--- a/src/core/ext/filters/channel_idle/channel_idle_filter.cc
+++ b/src/core/ext/filters/channel_idle/channel_idle_filter.cc
@@ -26,6 +26,7 @@
#include "absl/types/optional.h"
+#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
@@ -34,6 +35,7 @@
#include "src/core/lib/channel/promise_based_filter.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/status_helper.h"
@@ -54,6 +56,8 @@
namespace {
+using ::grpc_event_engine::experimental::EventEngine;
+
// TODO(ctiller): The idle filter was disabled in client channel by default
// due to b/143502997. Now the bug is fixed enable the filter by default.
const auto kDefaultIdleTimeout = Duration::Infinity();
@@ -121,15 +125,19 @@
absl::StatusOr<ClientIdleFilter> ClientIdleFilter::Create(
const ChannelArgs& args, ChannelFilter::Args filter_args) {
- ClientIdleFilter filter(filter_args.channel_stack(),
- GetClientIdleTimeout(args));
+ // TODO(hork): pull EventEngine from args
+ ClientIdleFilter filter(
+ filter_args.channel_stack(), GetClientIdleTimeout(args),
+ grpc_event_engine::experimental::GetDefaultEventEngine());
return absl::StatusOr<ClientIdleFilter>(std::move(filter));
}
absl::StatusOr<MaxAgeFilter> MaxAgeFilter::Create(
const ChannelArgs& args, ChannelFilter::Args filter_args) {
+ // TODO(hork): pull EventEngine from args
MaxAgeFilter filter(filter_args.channel_stack(),
- Config::FromChannelArgs(args));
+ Config::FromChannelArgs(args),
+ grpc_event_engine::experimental::GetDefaultEventEngine());
return absl::StatusOr<MaxAgeFilter>(std::move(filter));
}
@@ -203,7 +211,7 @@
// (if it did not, it was cancelled)
if (status.ok()) CloseChannel();
},
- channel_stack->EventEngine()));
+ engine_.get()));
}
}
@@ -264,7 +272,7 @@
[channel_stack, this](absl::Status status) {
if (status.ok()) CloseChannel();
},
- channel_stack->EventEngine()));
+ engine_.get()));
}
void ChannelIdleFilter::CloseChannel() {
@@ -306,10 +314,13 @@
});
}
-MaxAgeFilter::MaxAgeFilter(grpc_channel_stack* channel_stack,
- const Config& max_age_config)
- : ChannelIdleFilter(channel_stack, max_age_config.max_connection_idle),
+MaxAgeFilter::MaxAgeFilter(
+ grpc_channel_stack* channel_stack, const Config& max_age_config,
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine)
+ : ChannelIdleFilter(channel_stack, max_age_config.max_connection_idle,
+ engine),
max_connection_age_(max_age_config.max_connection_age),
- max_connection_age_grace_(max_age_config.max_connection_age_grace) {}
+ max_connection_age_grace_(max_age_config.max_connection_age_grace),
+ engine_(engine) {}
} // namespace grpc_core
diff --git a/src/core/ext/filters/channel_idle/channel_idle_filter.h b/src/core/ext/filters/channel_idle/channel_idle_filter.h
index d926d09..bc49a2a 100644
--- a/src/core/ext/filters/channel_idle/channel_idle_filter.h
+++ b/src/core/ext/filters/channel_idle/channel_idle_filter.h
@@ -22,6 +22,7 @@
#include "absl/status/status.h"
#include "absl/status/statusor.h"
+#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include "src/core/ext/filters/channel_idle/idle_filter_state.h"
@@ -58,10 +59,12 @@
using SingleSetActivityPtr =
SingleSetPtr<Activity, typename ActivityPtr::deleter_type>;
- ChannelIdleFilter(grpc_channel_stack* channel_stack,
- Duration client_idle_timeout)
+ ChannelIdleFilter(
+ grpc_channel_stack* channel_stack, Duration client_idle_timeout,
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine)
: channel_stack_(channel_stack),
- client_idle_timeout_(client_idle_timeout) {}
+ client_idle_timeout_(client_idle_timeout),
+ engine_(engine) {}
grpc_channel_stack* channel_stack() { return channel_stack_; };
@@ -87,6 +90,7 @@
std::make_shared<IdleFilterState>(false)};
SingleSetActivityPtr activity_;
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
};
class ClientIdleFilter final : public ChannelIdleFilter {
@@ -127,13 +131,16 @@
MaxAgeFilter* filter_;
};
- MaxAgeFilter(grpc_channel_stack* channel_stack, const Config& max_age_config);
+ MaxAgeFilter(
+ grpc_channel_stack* channel_stack, const Config& max_age_config,
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine);
void Shutdown() override;
SingleSetActivityPtr max_age_activity_;
Duration max_connection_age_;
Duration max_connection_age_grace_;
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
};
} // namespace grpc_core
diff --git a/src/core/ext/filters/client_channel/client_channel.cc b/src/core/ext/filters/client_channel/client_channel.cc
index a3c9919..31f573a 100644
--- a/src/core/ext/filters/client_channel/client_channel.cc
+++ b/src/core/ext/filters/client_channel/client_channel.cc
@@ -37,7 +37,6 @@
#include "absl/types/optional.h"
#include "absl/types/variant.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/slice.h>
#include <grpc/status.h>
@@ -916,10 +915,6 @@
return chand_->default_authority_;
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return chand_->owning_stack_->EventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
if (chand_->resolver_ == nullptr) return; // Shutting down.
diff --git a/src/core/ext/filters/client_channel/dynamic_filters.cc b/src/core/ext/filters/client_channel/dynamic_filters.cc
index 6d0a015..c023dc7 100644
--- a/src/core/ext/filters/client_channel/dynamic_filters.cc
+++ b/src/core/ext/filters/client_channel/dynamic_filters.cc
@@ -140,7 +140,8 @@
absl::StatusOr<RefCountedPtr<grpc_channel_stack>> CreateChannelStack(
const ChannelArgs& args, std::vector<const grpc_channel_filter*> filters) {
- ChannelStackBuilderImpl builder("DynamicFilters", GRPC_CLIENT_DYNAMIC, args);
+ ChannelStackBuilderImpl builder("DynamicFilters", GRPC_CLIENT_DYNAMIC);
+ builder.SetChannelArgs(args);
for (auto filter : filters) {
builder.AppendFilter(filter);
}
diff --git a/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc b/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
index b364b32..41568e6 100644
--- a/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
@@ -25,7 +25,6 @@
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/support/log.h>
@@ -108,10 +107,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return parent_->channel_control_helper()->GetEventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override {
if (parent_->shutting_down_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
index 8a907c9..66728f7 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
@@ -105,6 +105,7 @@
#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/debug_location.h"
@@ -302,6 +303,7 @@
bool client_load_report_is_due_ = false;
// The closure used for the completion of sending the load report.
grpc_closure client_load_report_done_closure_;
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
};
class SubchannelWrapper : public DelegatingSubchannel {
@@ -467,7 +469,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -871,10 +872,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine* GrpcLb::Helper::GetEventEngine() {
- return parent_->channel_control_helper()->GetEventEngine();
-}
-
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
absl::string_view message) {
if (parent_->shutting_down_) return;
@@ -890,7 +887,8 @@
: InternallyRefCounted<BalancerCallState>(
GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
: nullptr),
- grpclb_policy_(std::move(parent_grpclb_policy)) {
+ grpclb_policy_(std::move(parent_grpclb_policy)),
+ engine_(grpc_event_engine::experimental::GetDefaultEventEngine()) {
GPR_ASSERT(grpclb_policy_ != nullptr);
GPR_ASSERT(!grpclb_policy()->shutting_down_);
// Init the LB call. Note that the LB call will progress every time there's
@@ -948,8 +946,7 @@
// call, then the following cancellation will be a no-op.
grpc_call_cancel_internal(lb_call_);
if (client_load_report_handle_.has_value() &&
- grpclb_policy()->channel_control_helper()->GetEventEngine()->Cancel(
- client_load_report_handle_.value())) {
+ engine_->Cancel(client_load_report_handle_.value())) {
Unref(DEBUG_LOCATION, "client_load_report cancelled");
}
// Note that the initial ref is hold by lb_on_balancer_status_received_
@@ -1035,13 +1032,12 @@
void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
client_load_report_handle_ =
- grpclb_policy()->channel_control_helper()->GetEventEngine()->RunAfter(
- client_stats_report_interval_, [this] {
- ApplicationCallbackExecCtx callback_exec_ctx;
- ExecCtx exec_ctx;
- grpclb_policy()->work_serializer()->Run(
- [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
- });
+ engine_->RunAfter(client_stats_report_interval_, [this] {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ grpclb_policy()->work_serializer()->Run(
+ [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
+ });
}
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
@@ -1907,10 +1903,13 @@
} // namespace
+} // namespace grpc_core
+
//
// Plugin registration
//
+namespace grpc_core {
void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder) {
builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
std::make_unique<GrpcLbFactory>());
@@ -1929,5 +1928,4 @@
return true;
});
}
-
} // namespace grpc_core
diff --git a/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc b/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
index 295fbb4..b5047a7 100644
--- a/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
@@ -38,7 +38,6 @@
#include "absl/strings/string_view.h"
#include "absl/types/variant.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/support/log.h>
@@ -346,7 +345,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -771,11 +769,6 @@
return outlier_detection_policy_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-OutlierDetectionLb::Helper::GetEventEngine() {
- return outlier_detection_policy_->channel_control_helper()->GetEventEngine();
-}
-
void OutlierDetectionLb::Helper::AddTraceEvent(TraceSeverity severity,
absl::string_view message) {
if (outlier_detection_policy_->shutting_down_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc b/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
index c5e114b..8913ac8 100644
--- a/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
@@ -33,7 +33,6 @@
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
@@ -198,7 +197,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -851,12 +849,6 @@
return priority_->priority_policy_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-PriorityLb::ChildPriority::Helper::GetEventEngine() {
- return priority_->priority_policy_->channel_control_helper()
- ->GetEventEngine();
-}
-
void PriorityLb::ChildPriority::Helper::AddTraceEvent(
TraceSeverity severity, absl::string_view message) {
if (priority_->priority_policy_->shutting_down_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc b/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc
index 28e7e59..363a9f1 100644
--- a/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc
@@ -53,7 +53,6 @@
#include <grpc/byte_buffer.h>
#include <grpc/byte_buffer_reader.h>
-#include <grpc/event_engine/event_engine.h>
#include <grpc/grpc.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/impl/codegen/grpc_types.h>
@@ -336,7 +335,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -917,11 +915,6 @@
return wrapper_->lb_policy_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-RlsLb::ChildPolicyWrapper::ChildPolicyHelper::GetEventEngine() {
- return wrapper_->lb_policy_->channel_control_helper()->GetEventEngine();
-}
-
void RlsLb::ChildPolicyWrapper::ChildPolicyHelper::AddTraceEvent(
TraceSeverity severity, absl::string_view message) {
if (wrapper_->is_shutdown_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc b/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
index 3fe4675..a8cf390 100644
--- a/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
@@ -43,6 +43,7 @@
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted.h"
@@ -192,7 +193,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -212,6 +212,7 @@
RefCountedPtr<WeightedChild> weighted_child_;
absl::optional<EventEngine::TaskHandle> timer_handle_;
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
};
// Methods for dealing with the child policy.
@@ -480,17 +481,16 @@
WeightedTargetLb::WeightedChild::DelayedRemovalTimer::DelayedRemovalTimer(
RefCountedPtr<WeightedTargetLb::WeightedChild> weighted_child)
- : weighted_child_(std::move(weighted_child)) {
+ : weighted_child_(std::move(weighted_child)),
+ engine_(grpc_event_engine::experimental::GetDefaultEventEngine()) {
timer_handle_ =
- weighted_child_->weighted_target_policy_->channel_control_helper()
- ->GetEventEngine()
- ->RunAfter(kChildRetentionInterval, [self = Ref()]() mutable {
- ApplicationCallbackExecCtx app_exec_ctx;
- ExecCtx exec_ctx;
- self->weighted_child_->weighted_target_policy_->work_serializer()
- ->Run([self = std::move(self)] { self->OnTimerLocked(); },
- DEBUG_LOCATION);
- });
+ engine_->RunAfter(kChildRetentionInterval, [self = Ref()]() mutable {
+ ApplicationCallbackExecCtx app_exec_ctx;
+ ExecCtx exec_ctx;
+ self->weighted_child_->weighted_target_policy_->work_serializer()->Run(
+ [self = std::move(self)] { self->OnTimerLocked(); },
+ DEBUG_LOCATION);
+ });
}
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
@@ -502,9 +502,7 @@
weighted_child_->weighted_target_policy_.get(),
weighted_child_.get(), weighted_child_->name_.c_str());
}
- weighted_child_->weighted_target_policy_->channel_control_helper()
- ->GetEventEngine()
- ->Cancel(*timer_handle_);
+ engine_->Cancel(*timer_handle_);
}
Unref();
}
@@ -703,12 +701,6 @@
->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-WeightedTargetLb::WeightedChild::Helper::GetEventEngine() {
- return weighted_child_->weighted_target_policy_->channel_control_helper()
- ->GetEventEngine();
-}
-
void WeightedTargetLb::WeightedChild::Helper::AddTraceEvent(
TraceSeverity severity, absl::string_view message) {
if (weighted_child_->weighted_target_policy_->shutting_down_) return;
@@ -762,7 +754,7 @@
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
LoadBalancingPolicy::Args args) const override {
return MakeOrphanable<WeightedTargetLb>(std::move(args));
- }
+ } // namespace
absl::string_view name() const override { return kWeightedTarget; }
@@ -779,7 +771,7 @@
return LoadRefCountedFromJson<WeightedTargetLbConfig>(
json, JsonArgs(), "errors validating weighted_target LB policy config");
}
-};
+}; // namespace grpc_core
} // namespace
diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc b/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
index ea2b91f..5bc13e7 100644
--- a/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
@@ -30,7 +30,6 @@
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include <grpc/impl/codegen/connectivity_state.h>
@@ -177,7 +176,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -265,10 +263,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine* CdsLb::Helper::GetEventEngine() {
- return parent_->channel_control_helper()->GetEventEngine();
-}
-
void CdsLb::Helper::AddTraceEvent(TraceSeverity severity,
absl::string_view message) {
if (parent_->shutting_down_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
index 19057e9..fd1c72b 100644
--- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
@@ -34,7 +34,6 @@
#include "absl/types/optional.h"
#include "absl/types/variant.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/support/log.h>
@@ -254,7 +253,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -681,11 +679,6 @@
return xds_cluster_impl_policy_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-XdsClusterImplLb::Helper::GetEventEngine() {
- return xds_cluster_impl_policy_->channel_control_helper()->GetEventEngine();
-}
-
void XdsClusterImplLb::Helper::AddTraceEvent(TraceSeverity severity,
absl::string_view message) {
if (xds_cluster_impl_policy_->shutting_down_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
index 6fba5d6..c673b63 100644
--- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
@@ -42,6 +42,7 @@
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted.h"
@@ -68,6 +69,7 @@
namespace {
using ::grpc_event_engine::experimental::EventEngine;
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
constexpr Duration kChildRetentionInterval = Duration::Minutes(15);
constexpr absl::string_view kXdsClusterManager =
@@ -195,7 +197,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -223,6 +224,7 @@
// States for delayed removal.
absl::optional<EventEngine::TaskHandle> delayed_removal_timer_handle_;
bool shutdown_ = false;
+ std::shared_ptr<EventEngine> engine_;
};
~XdsClusterManagerLb() override;
@@ -428,7 +430,8 @@
RefCountedPtr<XdsClusterManagerLb> xds_cluster_manager_policy,
const std::string& name)
: xds_cluster_manager_policy_(std::move(xds_cluster_manager_policy)),
- name_(name) {
+ name_(name),
+ engine_(GetDefaultEventEngine()) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
gpr_log(GPR_INFO,
"[xds_cluster_manager_lb %p] created ClusterChild %p for %s",
@@ -463,9 +466,7 @@
// the child.
picker_wrapper_.reset();
if (delayed_removal_timer_handle_.has_value()) {
- xds_cluster_manager_policy_->channel_control_helper()
- ->GetEventEngine()
- ->Cancel(*delayed_removal_timer_handle_);
+ engine_->Cancel(*delayed_removal_timer_handle_);
}
shutdown_ = true;
Unref();
@@ -508,9 +509,7 @@
// Update child weight.
// Reactivate if needed.
if (delayed_removal_timer_handle_.has_value() &&
- xds_cluster_manager_policy_->channel_control_helper()
- ->GetEventEngine()
- ->Cancel(*delayed_removal_timer_handle_)) {
+ engine_->Cancel(*delayed_removal_timer_handle_)) {
delayed_removal_timer_handle_.reset();
}
// Create child policy if needed.
@@ -545,21 +544,17 @@
void XdsClusterManagerLb::ClusterChild::DeactivateLocked() {
// If already deactivated, don't do that again.
if (delayed_removal_timer_handle_.has_value()) return;
+ // Set the child weight to 0 so that future picker won't contain this child.
// Start a timer to delete the child.
- delayed_removal_timer_handle_ =
- xds_cluster_manager_policy_->channel_control_helper()
- ->GetEventEngine()
- ->RunAfter(
- kChildRetentionInterval,
- [self = Ref(DEBUG_LOCATION, "ClusterChild+timer")]() mutable {
- ApplicationCallbackExecCtx application_exec_ctx;
- ExecCtx exec_ctx;
- self->xds_cluster_manager_policy_->work_serializer()->Run(
- [self = std::move(self)]() {
- self->OnDelayedRemovalTimerLocked();
- },
- DEBUG_LOCATION);
- });
+ delayed_removal_timer_handle_ = engine_->RunAfter(
+ kChildRetentionInterval,
+ [self = Ref(DEBUG_LOCATION, "ClusterChild+timer")]() mutable {
+ ApplicationCallbackExecCtx application_exec_ctx;
+ ExecCtx exec_ctx;
+ self->xds_cluster_manager_policy_->work_serializer()->Run(
+ [self = std::move(self)]() { self->OnDelayedRemovalTimerLocked(); },
+ DEBUG_LOCATION);
+ });
}
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked() {
@@ -630,12 +625,6 @@
->GetAuthority();
}
-EventEngine* XdsClusterManagerLb::ClusterChild::Helper::GetEventEngine() {
- return xds_cluster_manager_child_->xds_cluster_manager_policy_
- ->channel_control_helper()
- ->GetEventEngine();
-}
-
void XdsClusterManagerLb::ClusterChild::Helper::AddTraceEvent(
TraceSeverity severity, absl::string_view message) {
if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
index ff6e67f..5ebbcd8 100644
--- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
@@ -34,7 +34,6 @@
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
@@ -379,7 +378,6 @@
// client, which is a watch-based API.
void RequestReresolution() override {}
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -456,12 +454,6 @@
return xds_cluster_resolver_policy_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-XdsClusterResolverLb::Helper::GetEventEngine() {
- return xds_cluster_resolver_policy_->channel_control_helper()
- ->GetEventEngine();
-}
-
void XdsClusterResolverLb::Helper::AddTraceEvent(TraceSeverity severity,
absl::string_view message) {
if (xds_cluster_resolver_policy_->shutting_down_) return;
diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc
index 7371b92..1f7d1c8 100644
--- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc
@@ -28,7 +28,6 @@
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/support/log.h>
@@ -130,7 +129,6 @@
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
absl::string_view GetAuthority() override;
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override;
@@ -267,7 +265,7 @@
lb_policy_args.work_serializer = work_serializer();
lb_policy_args.args = args;
lb_policy_args.channel_control_helper =
- std::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
+ std::make_unique<Helper>(this->Ref(DEBUG_LOCATION, "Helper"));
auto lb_policy =
CoreConfiguration::Get().lb_policy_registry().CreateLoadBalancingPolicy(
"weighted_target_experimental", std::move(lb_policy_args));
@@ -315,11 +313,6 @@
return xds_wrr_locality_->channel_control_helper()->GetAuthority();
}
-grpc_event_engine::experimental::EventEngine*
-XdsWrrLocalityLb::Helper::GetEventEngine() {
- return xds_wrr_locality_->channel_control_helper()->GetEventEngine();
-}
-
void XdsWrrLocalityLb::Helper::AddTraceEvent(TraceSeverity severity,
absl::string_view message) {
xds_wrr_locality_->channel_control_helper()->AddTraceEvent(severity, message);
diff --git a/src/core/ext/filters/client_channel/subchannel.cc b/src/core/ext/filters/client_channel/subchannel.cc
index 89a2956..24048b3 100644
--- a/src/core/ext/filters/client_channel/subchannel.cc
+++ b/src/core/ext/filters/client_channel/subchannel.cc
@@ -43,6 +43,7 @@
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/channel/channel_stack_builder_impl.h"
#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/channelz.h"
@@ -50,6 +51,7 @@
#include "src/core/lib/debug/stats.h"
#include "src/core/lib/debug/stats_data.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gpr/alloc.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/debug_location.h"
@@ -82,8 +84,6 @@
namespace grpc_core {
-using ::grpc_event_engine::experimental::EventEngine;
-
TraceFlag grpc_trace_subchannel(false, "subchannel");
DebugOnlyTraceFlag grpc_trace_subchannel_refcount(false, "subchannel_refcount");
@@ -626,7 +626,7 @@
pollset_set_(grpc_pollset_set_create()),
connector_(std::move(connector)),
backoff_(ParseArgsForBackoffValues(args_, &min_connect_timeout_)),
- event_engine_(args_.GetObjectRef<EventEngine>()) {
+ engine_(grpc_event_engine::experimental::GetDefaultEventEngine()) {
// A grpc_init is added here to ensure that grpc_shutdown does not happen
// until the subchannel is destroyed. Subchannels can persist longer than
// channels because they maybe reused/shared among multiple channels. As a
@@ -763,7 +763,7 @@
MutexLock lock(&mu_);
backoff_.Reset();
if (state_ == GRPC_CHANNEL_TRANSIENT_FAILURE &&
- event_engine_->Cancel(retry_timer_handle_)) {
+ engine_->Cancel(retry_timer_handle_)) {
OnRetryTimerLocked();
} else if (state_ == GRPC_CHANNEL_CONNECTING) {
next_attempt_time_ = Timestamp::Now();
@@ -912,7 +912,7 @@
time_until_next_attempt.millis());
SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
grpc_error_to_absl_status(error));
- retry_timer_handle_ = event_engine_->RunAfter(
+ retry_timer_handle_ = engine_->RunAfter(
time_until_next_attempt,
[self = WeakRef(DEBUG_LOCATION, "RetryTimer")]() mutable {
{
@@ -933,9 +933,9 @@
bool Subchannel::PublishTransportLocked() {
// Construct channel stack.
- ChannelStackBuilderImpl builder("subchannel", GRPC_CLIENT_SUBCHANNEL,
- connecting_result_.channel_args);
- builder.SetTransport(connecting_result_.transport);
+ ChannelStackBuilderImpl builder("subchannel", GRPC_CLIENT_SUBCHANNEL);
+ builder.SetChannelArgs(connecting_result_.channel_args)
+ .SetTransport(connecting_result_.transport);
if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
return false;
}
diff --git a/src/core/ext/filters/client_channel/subchannel.h b/src/core/ext/filters/client_channel/subchannel.h
index 26247da..aa8bd1d 100644
--- a/src/core/ext/filters/client_channel/subchannel.h
+++ b/src/core/ext/filters/client_channel/subchannel.h
@@ -427,7 +427,7 @@
// Data producer map.
std::map<UniqueTypeName, DataProducerInterface*> data_producer_map_
ABSL_GUARDED_BY(mu_);
- std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine_;
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine_;
};
} // namespace grpc_core
diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h
index 5d3bd2c..23e68ff 100644
--- a/src/core/lib/channel/channel_args.h
+++ b/src/core/lib/channel/channel_args.h
@@ -34,7 +34,6 @@
#include "absl/types/optional.h"
#include "absl/types/variant.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/grpc_types.h>
#include "src/core/lib/avl/avl.h"
@@ -46,11 +45,6 @@
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/surface/channel_stack_type.h"
-// TODO(hork): When we're ready to allow setting via a channel arg from the
-// application, replace this with a macro in
-// include/grpc/impl/codegen/grpc_types.h.
-#define GRPC_INTERNAL_ARG_EVENT_ENGINE "grpc.internal.event_engine"
-
// Channel args are intentionally immutable, to avoid the need for locking.
namespace grpc_core {
@@ -176,9 +170,6 @@
struct WrapInSharedPtr
: std::integral_constant<
bool, std::is_base_of<std::enable_shared_from_this<T>, T>::value> {};
-template <>
-struct WrapInSharedPtr<grpc_event_engine::experimental::EventEngine>
- : std::true_type {};
template <typename T, typename Ignored = void /* for SFINAE */>
struct GetObjectImpl;
// std::shared_ptr implementation
@@ -222,13 +213,7 @@
struct ChannelArgNameTraits<std::shared_ptr<T>> {
static absl::string_view ChannelArgName() { return T::ChannelArgName(); }
};
-// Specialization for the EventEngine
-template <>
-struct ChannelArgNameTraits<grpc_event_engine::experimental::EventEngine> {
- static absl::string_view ChannelArgName() {
- return GRPC_INTERNAL_ARG_EVENT_ENGINE;
- }
-};
+
class ChannelArgs {
public:
class Pointer {
diff --git a/src/core/lib/channel/channel_stack.cc b/src/core/lib/channel/channel_stack.cc
index 419493b..b73d38f 100644
--- a/src/core/lib/channel/channel_stack.cc
+++ b/src/core/lib/channel/channel_stack.cc
@@ -30,8 +30,6 @@
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/alloc.h"
-using grpc_event_engine::experimental::EventEngine;
-
grpc_core::TraceFlag grpc_trace_channel(false, "channel");
grpc_core::TraceFlag grpc_trace_channel_stack(false, "channel_stack");
@@ -118,7 +116,6 @@
}
stack->on_destroy.Init([]() {});
- stack->event_engine.Init(channel_args.GetObjectRef<EventEngine>());
size_t call_size =
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
@@ -178,7 +175,6 @@
(*stack->on_destroy)();
stack->on_destroy.Destroy();
- stack->event_engine.Destroy();
}
grpc_error_handle grpc_call_stack_init(
diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h
index c766ec7..6d19e12 100644
--- a/src/core/lib/channel/channel_stack.h
+++ b/src/core/lib/channel/channel_stack.h
@@ -49,9 +49,7 @@
#include <stddef.h>
#include <functional>
-#include <memory>
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/slice.h>
@@ -214,14 +212,6 @@
// should look like and this can go.
grpc_core::ManualConstructor<std::function<void()>> on_destroy;
- grpc_core::ManualConstructor<
- std::shared_ptr<grpc_event_engine::experimental::EventEngine>>
- event_engine;
-
- grpc_event_engine::experimental::EventEngine* EventEngine() const {
- return event_engine->get();
- }
-
// Minimal infrastructure to act like a RefCounted thing without converting
// everything.
// It's likely that we'll want to replace grpc_channel_stack with something
diff --git a/src/core/lib/channel/channel_stack_builder.cc b/src/core/lib/channel/channel_stack_builder.cc
index 9c86704..45ef965 100644
--- a/src/core/lib/channel/channel_stack_builder.cc
+++ b/src/core/lib/channel/channel_stack_builder.cc
@@ -26,10 +26,7 @@
namespace grpc_core {
-ChannelStackBuilder::ChannelStackBuilder(const char* name,
- grpc_channel_stack_type type,
- const ChannelArgs& channel_args)
- : name_(name), type_(type), args_(channel_args) {}
+ChannelStackBuilder::~ChannelStackBuilder() = default;
ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
if (target == nullptr) {
@@ -40,6 +37,12 @@
return *this;
}
+ChannelStackBuilder& ChannelStackBuilder::SetChannelArgs(
+ const ChannelArgs& args) {
+ args_ = args;
+ return *this;
+}
+
void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter) {
stack_.insert(stack_.begin(), filter);
}
diff --git a/src/core/lib/channel/channel_stack_builder.h b/src/core/lib/channel/channel_stack_builder.h
index ed03158..f08efa7 100644
--- a/src/core/lib/channel/channel_stack_builder.h
+++ b/src/core/lib/channel/channel_stack_builder.h
@@ -41,9 +41,8 @@
class ChannelStackBuilder {
public:
// Initialize with a name.
- // channel_args *must be* preconditioned already.
- ChannelStackBuilder(const char* name, grpc_channel_stack_type type,
- const ChannelArgs& channel_args);
+ ChannelStackBuilder(const char* name, grpc_channel_stack_type type)
+ : name_(name), type_(type) {}
const char* name() const { return name_; }
@@ -63,6 +62,9 @@
// Query the transport.
grpc_transport* transport() const { return transport_; }
+ // Set channel args.
+ ChannelStackBuilder& SetChannelArgs(const ChannelArgs& args);
+
// Query the channel args.
const ChannelArgs& channel_args() const { return args_; }
@@ -96,7 +98,7 @@
virtual absl::StatusOr<RefCountedPtr<grpc_channel_stack>> Build() = 0;
protected:
- ~ChannelStackBuilder() = default;
+ ~ChannelStackBuilder();
private:
static std::string unknown_target() { return "unknown"; }
diff --git a/src/core/lib/event_engine/default_event_engine.cc b/src/core/lib/event_engine/default_event_engine.cc
index 56ce9ba..6e46e58 100644
--- a/src/core/lib/event_engine/default_event_engine.cc
+++ b/src/core/lib/event_engine/default_event_engine.cc
@@ -23,9 +23,6 @@
#include <grpc/event_engine/event_engine.h>
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/event_engine/default_event_engine_factory.h"
#include "src/core/lib/event_engine/trace.h"
@@ -77,19 +74,5 @@
return engine;
}
-namespace {
-grpc_core::ChannelArgs EnsureEventEngineInChannelArgs(
- grpc_core::ChannelArgs args) {
- if (args.ContainsObject<EventEngine>()) return args;
- return args.SetObject<EventEngine>(GetDefaultEventEngine());
-}
-} // namespace
-
-void RegisterEventEngineChannelArgPreconditioning(
- grpc_core::CoreConfiguration::Builder* builder) {
- builder->channel_args_preconditioning()->RegisterStage(
- grpc_event_engine::experimental::EnsureEventEngineInChannelArgs);
-}
-
} // namespace experimental
} // namespace grpc_event_engine
diff --git a/src/core/lib/event_engine/default_event_engine.h b/src/core/lib/event_engine/default_event_engine.h
index 4a65bd0..e116a47 100644
--- a/src/core/lib/event_engine/default_event_engine.h
+++ b/src/core/lib/event_engine/default_event_engine.h
@@ -21,7 +21,6 @@
#include <grpc/event_engine/event_engine.h>
-#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/promise/context.h"
namespace grpc_core {
@@ -38,11 +37,6 @@
/// Strongly consider whether you could use \a CreateEventEngine instead.
std::shared_ptr<EventEngine> GetDefaultEventEngine();
-/// On ingress, ensure that an EventEngine exists in channel args via
-/// preconditioning.
-void RegisterEventEngineChannelArgPreconditioning(
- grpc_core::CoreConfiguration::Builder* builder);
-
} // namespace experimental
} // namespace grpc_event_engine
diff --git a/src/core/lib/load_balancing/lb_policy.h b/src/core/lib/load_balancing/lb_policy.h
index d68bf11..96ed933 100644
--- a/src/core/lib/load_balancing/lb_policy.h
+++ b/src/core/lib/load_balancing/lb_policy.h
@@ -33,7 +33,6 @@
#include "absl/types/optional.h"
#include "absl/types/variant.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
@@ -292,9 +291,6 @@
/// Returns the channel authority.
virtual absl::string_view GetAuthority() = 0;
- /// Returns the EventEngine to use for timers and async work.
- virtual grpc_event_engine::experimental::EventEngine* GetEventEngine() = 0;
-
/// Adds a trace message associated with the channel.
enum TraceSeverity { TRACE_INFO, TRACE_WARNING, TRACE_ERROR };
virtual void AddTraceEvent(TraceSeverity severity,
diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc
index 561ab26..fd33ec6 100644
--- a/src/core/lib/surface/channel.cc
+++ b/src/core/lib/surface/channel.cc
@@ -170,12 +170,44 @@
int channelz_node_cmp(void* p1, void* p2) { return QsortCompare(p1, p2); }
const grpc_arg_pointer_vtable channelz_node_arg_vtable = {
channelz_node_copy, channelz_node_destroy, channelz_node_cmp};
+
+void CreateChannelzNode(ChannelStackBuilder* builder) {
+ auto args = builder->channel_args();
+ // Check whether channelz is enabled.
+ const bool channelz_enabled = args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT);
+ if (!channelz_enabled) return;
+ // Get parameters needed to create the channelz node.
+ const size_t channel_tracer_max_memory = std::max(
+ 0, args.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)
+ .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT));
+ const bool is_internal_channel =
+ args.GetBool(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL).value_or(false);
+ // Create the channelz node.
+ std::string target(builder->target());
+ RefCountedPtr<channelz::ChannelNode> channelz_node =
+ MakeRefCounted<channelz::ChannelNode>(
+ target.c_str(), channel_tracer_max_memory, is_internal_channel);
+ channelz_node->AddTraceEvent(
+ channelz::ChannelTrace::Severity::Info,
+ grpc_slice_from_static_string("Channel created"));
+ // Add channelz node to channel args.
+ // We remove the is_internal_channel arg, since we no longer need it.
+ builder->SetChannelArgs(
+ args.Remove(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL)
+ .Set(GRPC_ARG_CHANNELZ_CHANNEL_NODE,
+ ChannelArgs::Pointer(channelz_node.release(),
+ &channelz_node_arg_vtable)));
+}
+
} // namespace
absl::StatusOr<RefCountedPtr<Channel>> Channel::Create(
const char* target, ChannelArgs args,
grpc_channel_stack_type channel_stack_type,
grpc_transport* optional_transport) {
+ ChannelStackBuilderImpl builder(
+ grpc_channel_stack_type_string(channel_stack_type), channel_stack_type);
if (!args.GetString(GRPC_ARG_DEFAULT_AUTHORITY).has_value()) {
auto ssl_override = args.GetString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
if (ssl_override.has_value()) {
@@ -190,42 +222,15 @@
args = channel_args_mutator(target, args, channel_stack_type);
}
}
+ builder.SetChannelArgs(args).SetTarget(target).SetTransport(
+ optional_transport);
+ if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
+ return nullptr;
+ }
// We only need to do this for clients here. For servers, this will be
// done in src/core/lib/surface/server.cc.
if (grpc_channel_stack_type_is_client(channel_stack_type)) {
- // Check whether channelz is enabled.
- if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
- .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
- // Get parameters needed to create the channelz node.
- const size_t channel_tracer_max_memory = std::max(
- 0,
- args.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)
- .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT));
- const bool is_internal_channel =
- args.GetBool(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL).value_or(false);
- // Create the channelz node.
- std::string channelz_node_target{target == nullptr ? "unknown" : target};
- RefCountedPtr<channelz::ChannelNode> channelz_node =
- MakeRefCounted<channelz::ChannelNode>(channelz_node_target,
- channel_tracer_max_memory,
- is_internal_channel);
- channelz_node->AddTraceEvent(
- channelz::ChannelTrace::Severity::Info,
- grpc_slice_from_static_string("Channel created"));
- // Add channelz node to channel args.
- // We remove the is_internal_channel arg, since we no longer need it.
- args = args.Remove(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL)
- .Set(GRPC_ARG_CHANNELZ_CHANNEL_NODE,
- ChannelArgs::Pointer(channelz_node.release(),
- &channelz_node_arg_vtable));
- }
- }
- ChannelStackBuilderImpl builder(
- grpc_channel_stack_type_string(channel_stack_type), channel_stack_type,
- args);
- builder.SetTarget(target).SetTransport(optional_transport);
- if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
- return nullptr;
+ CreateChannelzNode(&builder);
}
return CreateWithBuilder(&builder);
}
diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h
index 16562ef..f1c5bb0 100644
--- a/src/core/lib/surface/channel.h
+++ b/src/core/lib/surface/channel.h
@@ -26,6 +26,7 @@
#include <atomic>
#include <map>
+#include <memory>
#include <string>
#include <utility>
@@ -45,6 +46,7 @@
#include "src/core/lib/channel/channel_stack.h" // IWYU pragma: keep
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gprpp/cpp_impl_of.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted.h"
@@ -156,7 +158,7 @@
}
grpc_event_engine::experimental::EventEngine* event_engine() const {
- return channel_stack_->EventEngine();
+ return event_engine_.get();
}
private:
@@ -174,6 +176,8 @@
MemoryAllocator allocator_;
std::string target_;
const RefCountedPtr<grpc_channel_stack> channel_stack_;
+ const std::shared_ptr<grpc_event_engine::experimental::EventEngine>
+ event_engine_ = grpc_event_engine::experimental::GetDefaultEventEngine();
};
} // namespace grpc_core
diff --git a/src/core/plugin_registry/grpc_plugin_registry.cc b/src/core/plugin_registry/grpc_plugin_registry.cc
index fb55a55..f1b5bea 100644
--- a/src/core/plugin_registry/grpc_plugin_registry.cc
+++ b/src/core/plugin_registry/grpc_plugin_registry.cc
@@ -25,12 +25,6 @@
#include "src/core/lib/transport/http_connect_handshaker.h"
#include "src/core/lib/transport/tcp_connect_handshaker.h"
-namespace grpc_event_engine {
-namespace experimental {
-extern void RegisterEventEngineChannelArgPreconditioning(grpc_core::CoreConfiguration::Builder* builder);
-} // namespace experimental
-} // namespace grpc_event_engine
-
namespace grpc_core {
extern void BuildClientChannelConfiguration(
@@ -69,7 +63,6 @@
#endif
void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
- grpc_event_engine::experimental::RegisterEventEngineChannelArgPreconditioning(builder);
// The order of the handshaker registration is crucial here.
// We want TCP connect handshaker to be registered last so that it is added to
// the start of the handshaker list.
diff --git a/test/core/channel/channel_args_test.cc b/test/core/channel/channel_args_test.cc
index 7388eec..4657c77 100644
--- a/test/core/channel/channel_args_test.cc
+++ b/test/core/channel/channel_args_test.cc
@@ -28,7 +28,6 @@
#include <grpc/support/log.h>
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/notification.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/exec_ctx.h"
@@ -36,9 +35,6 @@
namespace grpc_core {
-using ::grpc_event_engine::experimental::CreateEventEngine;
-using ::grpc_event_engine::experimental::EventEngine;
-
TEST(ChannelArgsTest, Noop) { ChannelArgs(); }
TEST(ChannelArgsTest, SetGetRemove) {
@@ -168,33 +164,6 @@
EXPECT_EQ(2, shared_obj.use_count());
}
-TEST(ChannelArgsTest, StoreSharedPtrEventEngine) {
- auto p = std::shared_ptr<EventEngine>(CreateEventEngine());
- ChannelArgs a;
- a = a.SetObject(p);
- Notification signal;
- bool triggered = false;
- a.GetObjectRef<EventEngine>()->Run([&triggered, &signal] {
- triggered = true;
- signal.Notify();
- });
- signal.WaitForNotification();
- ASSERT_TRUE(triggered);
-}
-
-TEST(ChannelArgsTest, GetNonOwningEventEngine) {
- auto p = std::shared_ptr<EventEngine>(CreateEventEngine());
- ASSERT_TRUE(p.unique());
- ChannelArgs a;
- a = a.SetObject(p);
- ASSERT_FALSE(p.unique());
- ASSERT_EQ(p.use_count(), 2);
- EventEngine* engine = a.GetObject<EventEngine>();
- (void)engine;
- // p and the channel args
- ASSERT_EQ(p.use_count(), 2);
-}
-
} // namespace grpc_core
TEST(GrpcChannelArgsTest, Create) {
diff --git a/test/core/channel/channel_stack_builder_test.cc b/test/core/channel/channel_stack_builder_test.cc
index 9693ebf..90ee4a8 100644
--- a/test/core/channel/channel_stack_builder_test.cc
+++ b/test/core/channel/channel_stack_builder_test.cc
@@ -119,8 +119,7 @@
}
TEST(ChannelStackBuilder, UnknownTarget) {
- ChannelStackBuilderImpl builder("alpha-beta-gamma", GRPC_CLIENT_CHANNEL,
- ChannelArgs());
+ ChannelStackBuilderImpl builder("alpha-beta-gamma", GRPC_CLIENT_CHANNEL);
EXPECT_EQ(builder.target(), "unknown");
}
diff --git a/test/core/channel/channel_stack_test.cc b/test/core/channel/channel_stack_test.cc
index fff9904..65eea62 100644
--- a/test/core/channel/channel_stack_test.cc
+++ b/test/core/channel/channel_stack_test.cc
@@ -18,31 +18,24 @@
#include "src/core/lib/channel/channel_stack.h"
-#include <limits.h>
-
#include <string>
#include "absl/status/status.h"
#include "gtest/gtest.h"
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "test/core/util/test_config.h"
static grpc_error_handle channel_init_func(grpc_channel_element* elem,
grpc_channel_element_args* args) {
- int test_value = grpc_channel_args_find_integer(args->channel_args,
- "test_key", {-1, 0, INT_MAX});
- EXPECT_EQ(test_value, 42);
- auto* ee = grpc_channel_args_find_pointer<
- grpc_event_engine::experimental::EventEngine>(
- args->channel_args, GRPC_INTERNAL_ARG_EVENT_ENGINE);
- EXPECT_NE(ee, nullptr);
+ EXPECT_EQ(args->channel_args->num_args, 1);
+ EXPECT_EQ(args->channel_args->args[0].type, GRPC_ARG_INTEGER);
+ EXPECT_STREQ(args->channel_args->args[0].key, "test_key");
+ EXPECT_EQ(args->channel_args->args[0].value.integer, 42);
EXPECT_TRUE(args->is_first);
EXPECT_TRUE(args->is_last);
*static_cast<int*>(elem->channel_data) = 0;
@@ -111,14 +104,11 @@
channel_stack = static_cast<grpc_channel_stack*>(
gpr_malloc(grpc_channel_stack_size(&filters, 1)));
- auto channel_args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(nullptr)
- .Set("test_key", 42);
ASSERT_TRUE(GRPC_LOG_IF_ERROR(
"grpc_channel_stack_init",
grpc_channel_stack_init(1, free_channel, channel_stack, &filters, 1,
- channel_args, "test", channel_stack)));
+ grpc_core::ChannelArgs().Set("test_key", 42),
+ "test", channel_stack)));
EXPECT_EQ(channel_stack->count, 1);
channel_elem = grpc_channel_stack_element(channel_stack, 0);
channel_data = static_cast<int*>(channel_elem->channel_data);
diff --git a/test/core/channel/minimal_stack_is_minimal_test.cc b/test/core/channel/minimal_stack_is_minimal_test.cc
index 8bef028..efc342d 100644
--- a/test/core/channel/minimal_stack_is_minimal_test.cc
+++ b/test/core/channel/minimal_stack_is_minimal_test.cc
@@ -43,6 +43,7 @@
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/channel/channel_stack_builder_impl.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/iomgr/exec_ctx.h"
@@ -128,17 +129,16 @@
static int check_stack(const char* file, int line, const char* transport_name,
grpc_channel_args* init_args,
unsigned channel_stack_type, ...) {
- grpc_core::ChannelArgs channel_args =
- grpc_core::ChannelArgs::FromC(init_args);
// create phony channel stack
grpc_core::ChannelStackBuilderImpl builder(
- "test", static_cast<grpc_channel_stack_type>(channel_stack_type),
- channel_args);
+ "test", static_cast<grpc_channel_stack_type>(channel_stack_type));
grpc_transport_vtable fake_transport_vtable;
memset(&fake_transport_vtable, 0, sizeof(grpc_transport_vtable));
fake_transport_vtable.name = transport_name;
grpc_transport fake_transport = {&fake_transport_vtable};
- builder.SetTarget("foo.test.google.fr");
+ grpc_core::ChannelArgs channel_args =
+ grpc_core::ChannelArgs::FromC(init_args);
+ builder.SetTarget("foo.test.google.fr").SetChannelArgs(channel_args);
if (transport_name != nullptr) {
builder.SetTransport(&fake_transport);
}
diff --git a/test/core/client_channel/lb_policy/lb_policy_test_lib.h b/test/core/client_channel/lb_policy/lb_policy_test_lib.h
index 60ea798..e61fc2c 100644
--- a/test/core/client_channel/lb_policy/lb_policy_test_lib.h
+++ b/test/core/client_channel/lb_policy/lb_policy_test_lib.h
@@ -38,7 +38,6 @@
#include "absl/types/variant.h"
#include "gtest/gtest.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -48,7 +47,6 @@
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -239,10 +237,6 @@
absl::string_view GetAuthority() override { return "server.example.com"; }
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return grpc_event_engine::experimental::GetDefaultEventEngine().get();
- }
-
void AddTraceEvent(TraceSeverity, absl::string_view) override {}
LoadBalancingPolicyTest* test_;
diff --git a/test/core/filters/filter_fuzzer.cc b/test/core/filters/filter_fuzzer.cc
index 69a5fd8..6b07557 100644
--- a/test/core/filters/filter_fuzzer.cc
+++ b/test/core/filters/filter_fuzzer.cc
@@ -43,13 +43,11 @@
#include "src/core/ext/filters/http/server/http_server_filter.h"
#include "src/core/lib/channel/call_finalization.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_args_preconditioning.h"
#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder_impl.h"
#include "src/core/lib/channel/context.h"
#include "src/core/lib/channel/promise_based_filter.h"
-#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/env.h"
@@ -249,9 +247,7 @@
template <typename FuzzerChannelArgs>
ChannelArgs LoadChannelArgs(const FuzzerChannelArgs& fuzz_args,
GlobalObjects* globals) {
- ChannelArgs args = CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(nullptr);
+ ChannelArgs args = ChannelArgs().SetObject(ResourceQuota::Default());
for (const auto& arg : fuzz_args) {
if (arg.key() == ResourceQuota::ChannelArgName()) {
if (arg.value_case() == filter_fuzzer::ChannelArg::kResourceQuota) {
@@ -679,8 +675,8 @@
grpc_core::ChannelStackBuilderImpl builder(
msg.stack_name().c_str(),
- static_cast<grpc_channel_stack_type>(msg.channel_stack_type()),
- channel_args);
+ static_cast<grpc_channel_stack_type>(msg.channel_stack_type()));
+ builder.SetChannelArgs(channel_args);
builder.AppendFilter(filter);
const bool is_client =
grpc_channel_stack_type_is_client(builder.channel_stack_type());
diff --git a/test/core/util/test_lb_policies.cc b/test/core/util/test_lb_policies.cc
index 016380b..4fdca07 100644
--- a/test/core/util/test_lb_policies.cc
+++ b/test/core/util/test_lb_policies.cc
@@ -26,7 +26,6 @@
#include "absl/strings/string_view.h"
#include "absl/types/variant.h"
-#include <grpc/event_engine/event_engine.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
@@ -157,10 +156,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return parent_->channel_control_helper()->GetEventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override {
parent_->channel_control_helper()->AddTraceEvent(severity, message);
@@ -279,10 +274,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return parent_->channel_control_helper()->GetEventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override {
parent_->channel_control_helper()->AddTraceEvent(severity, message);
@@ -394,10 +385,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return parent_->channel_control_helper()->GetEventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override {
parent_->channel_control_helper()->AddTraceEvent(severity, message);
@@ -513,10 +500,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return parent_->channel_control_helper()->GetEventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override {
parent_->channel_control_helper()->AddTraceEvent(severity, message);
@@ -634,10 +617,6 @@
return parent_->channel_control_helper()->GetAuthority();
}
- grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
- return parent_->channel_control_helper()->GetEventEngine();
- }
-
void AddTraceEvent(TraceSeverity severity,
absl::string_view message) override {
parent_->channel_control_helper()->AddTraceEvent(severity, message);
diff --git a/test/core/xds/xds_channel_stack_modifier_test.cc b/test/core/xds/xds_channel_stack_modifier_test.cc
index ca02601..9f9bfc5 100644
--- a/test/core/xds/xds_channel_stack_modifier_test.cc
+++ b/test/core/xds/xds_channel_stack_modifier_test.cc
@@ -90,8 +90,8 @@
grpc_arg arg = channel_stack_modifier->MakeChannelArg();
// Create a phony ChannelStackBuilder object
grpc_channel_args* args = grpc_channel_args_copy_and_add(nullptr, &arg, 1);
- ChannelStackBuilderImpl builder("test", GRPC_SERVER_CHANNEL,
- ChannelArgs::FromC(args));
+ ChannelStackBuilderImpl builder("test", GRPC_SERVER_CHANNEL);
+ builder.SetChannelArgs(ChannelArgs::FromC(args));
grpc_channel_args_destroy(args);
grpc_transport_vtable fake_transport_vtable;
memset(&fake_transport_vtable, 0, sizeof(grpc_transport_vtable));
@@ -128,8 +128,8 @@
grpc_arg arg = channel_stack_modifier->MakeChannelArg();
// Create a phony ChannelStackBuilder object
grpc_channel_args* args = grpc_channel_args_copy_and_add(nullptr, &arg, 1);
- ChannelStackBuilderImpl builder("test", GRPC_SERVER_CHANNEL,
- ChannelArgs::FromC(args));
+ ChannelStackBuilderImpl builder("test", GRPC_SERVER_CHANNEL);
+ builder.SetChannelArgs(ChannelArgs::FromC(args));
grpc_channel_args_destroy(args);
grpc_transport_vtable fake_transport_vtable;
memset(&fake_transport_vtable, 0, sizeof(grpc_transport_vtable));
diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc
index a518f85..3b4b57d 100644
--- a/test/cpp/microbenchmarks/bm_call_create.cc
+++ b/test/cpp/microbenchmarks/bm_call_create.cc
@@ -501,9 +501,7 @@
FakeClientChannelFactory fake_client_channel_factory;
grpc_core::ChannelArgs channel_args =
- grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(nullptr)
+ grpc_core::ChannelArgs()
.SetObject(&fake_client_channel_factory)
.Set(GRPC_ARG_SERVER_URI, "localhost");
if (fixture.flags & REQUIRES_TRANSPORT) {
@@ -698,12 +696,12 @@
// the grpc_shutdown() run by grpc_channel_destroy(). So we need to
// call grpc_init() manually here to balance things out.
grpc_init();
- grpc_core::ChannelStackBuilderImpl builder(
- "phony", GRPC_CLIENT_CHANNEL,
- grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(nullptr));
+ auto args = grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(nullptr);
+ grpc_core::ChannelStackBuilderImpl builder("phony", GRPC_CLIENT_CHANNEL);
builder.SetTarget("phony_target");
+ builder.SetChannelArgs(args);
builder.AppendFilter(&isolated_call_filter::isolated_call_filter);
{
grpc_core::ExecCtx exec_ctx;
diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h
index ef75c95..df7444d 100644
--- a/test/cpp/microbenchmarks/fullstack_fixtures.h
+++ b/test/cpp/microbenchmarks/fullstack_fixtures.h
@@ -30,7 +30,6 @@
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/iomgr/endpoint.h"
#include "src/core/lib/iomgr/endpoint_pair.h"
#include "src/core/lib/iomgr/exec_ctx.h"
@@ -190,18 +189,12 @@
/* create channel */
{
- grpc_core::ChannelArgs c_args;
- {
- ChannelArguments args;
- args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "test.authority");
- fixture_configuration.ApplyCommonChannelArguments(&args);
- // precondition
- grpc_channel_args tmp_args;
- args.SetChannelArgs(&tmp_args);
- c_args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(&tmp_args);
- }
+ ChannelArguments args;
+ args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "test.authority");
+ fixture_configuration.ApplyCommonChannelArguments(&args);
+
+ grpc_core::ChannelArgs c_args =
+ grpc_core::ChannelArgs::FromC(args.c_channel_args());
client_transport_ =
grpc_create_chttp2_transport(c_args, endpoints.client, true);
GPR_ASSERT(client_transport_);