"call_tracer_in_transport": "call_tracer_in_transport",
"channelz_use_v2_for_v1_api": "channelz_use_v2_for_v1_api",
"channelz_use_v2_for_v1_service": "channelz_use_v2_for_v1_service",
+ "chaotic_good_connect_deadline": "chaotic_good_connect_deadline",
"chaotic_good_framing_layer": "chaotic_good_framing_layer",
"chttp2_bound_write_size": "chttp2_bound_write_size",
"error_flatten": "error_flatten",
"event_engine_dns",
],
"core_end2end_test": [
+ "chaotic_good_connect_deadline",
"chaotic_good_framing_layer",
"event_engine_client",
"event_engine_dns_non_client_channel",
"event_engine_dns",
],
"core_end2end_test": [
+ "chaotic_good_connect_deadline",
"chaotic_good_framing_layer",
"event_engine_client",
"event_engine_dns_non_client_channel",
"event_engine_dns",
],
"core_end2end_test": [
+ "chaotic_good_connect_deadline",
"chaotic_good_framing_layer",
"event_engine_client",
"event_engine_dns_non_client_channel",
return TrySeq(
ConnectChaoticGood(
resolved_addr, result_notifier_ptr->args.channel_args,
- Timestamp::Now() + Duration::FromSecondsAsDouble(kTimeoutSecs),
+ IsChaoticGoodConnectDeadlineEnabled()
+ ? result_notifier_ptr->args.deadline
+ : Timestamp::Now() +
+ Duration::FromSecondsAsDouble(kTimeoutSecs),
std::move(client_settings)),
[resolved_addr,
result_notifier_ptr](ConnectChaoticGoodResult result) {
const char* const description_channelz_use_v2_for_v1_service =
"Use the v2 channelz service for the v1 channelz service.";
const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
+const char* const description_chaotic_good_connect_deadline =
+ "Use the deadline from the connect args in chaotic good connector";
+const char* const additional_constraints_chaotic_good_connect_deadline = "{}";
const char* const description_chaotic_good_framing_layer =
"Enable the chaotic good framing layer.";
const char* const additional_constraints_chaotic_good_framing_layer = "{}";
description_channelz_use_v2_for_v1_service,
additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
true},
+ {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline,
+ additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true,
+ true},
{"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
false},
const char* const description_channelz_use_v2_for_v1_service =
"Use the v2 channelz service for the v1 channelz service.";
const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
+const char* const description_chaotic_good_connect_deadline =
+ "Use the deadline from the connect args in chaotic good connector";
+const char* const additional_constraints_chaotic_good_connect_deadline = "{}";
const char* const description_chaotic_good_framing_layer =
"Enable the chaotic good framing layer.";
const char* const additional_constraints_chaotic_good_framing_layer = "{}";
description_channelz_use_v2_for_v1_service,
additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
true},
+ {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline,
+ additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true,
+ true},
{"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
false},
const char* const description_channelz_use_v2_for_v1_service =
"Use the v2 channelz service for the v1 channelz service.";
const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
+const char* const description_chaotic_good_connect_deadline =
+ "Use the deadline from the connect args in chaotic good connector";
+const char* const additional_constraints_chaotic_good_connect_deadline = "{}";
const char* const description_chaotic_good_framing_layer =
"Enable the chaotic good framing layer.";
const char* const additional_constraints_chaotic_good_framing_layer = "{}";
description_channelz_use_v2_for_v1_service,
additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
true},
+ {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline,
+ additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true,
+ true},
{"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
false},
inline bool IsCallTracerInTransportEnabled() { return true; }
inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
+#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
+inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; }
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
inline bool IsCallTracerInTransportEnabled() { return true; }
inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
+#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
+inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; }
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
inline bool IsCallTracerInTransportEnabled() { return true; }
inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
+#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
+inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; }
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
kExperimentIdCallTracerInTransport,
kExperimentIdChannelzUseV2ForV1Api,
kExperimentIdChannelzUseV2ForV1Service,
+ kExperimentIdChaoticGoodConnectDeadline,
kExperimentIdChaoticGoodFramingLayer,
kExperimentIdChttp2BoundWriteSize,
kExperimentIdErrorFlatten,
inline bool IsChannelzUseV2ForV1ServiceEnabled() {
return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Service>();
}
+#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
+inline bool IsChaoticGoodConnectDeadlineEnabled() {
+ return IsExperimentEnabled<kExperimentIdChaoticGoodConnectDeadline>();
+}
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
inline bool IsChaoticGoodFramingLayerEnabled() {
return IsExperimentEnabled<kExperimentIdChaoticGoodFramingLayer>();
expiry: 2026/02/01
owner: ctiller@google.com
test_tags: [channelz_test]
+- name: chaotic_good_connect_deadline
+ description: Use the deadline from the connect args in chaotic good connector
+ expiry: 2026/02/01
+ owner: ctiller@google.com
+ test_tags: [core_end2end_test]
- name: chaotic_good_framing_layer
description: Enable the chaotic good framing layer.
expiry: 2026/02/01
- name: call_tracer_in_transport
default: true
+- name: chaotic_good_connect_deadline
+ default: true
- name: chaotic_good_framing_layer
default: true
- name: error_flatten
"//src/core:default_event_engine",
"//src/core:endpoint_transport",
"//src/core:event_engine_tcp_socket_utils",
+ "//src/core:experiments",
"//src/core:grpc_check",
"//src/core:grpc_fake_credentials",
"//src/core:notification",
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/event_engine/tcp_socket_utils.h"
+#include "src/core/lib/experiments/config.h"
+#include "src/core/lib/experiments/experiments.h"
#include "src/core/server/server.h"
#include "src/core/transport/endpoint_transport.h"
#include "src/core/util/grpc_check.h"
GRPC_CHECK_OK(uri);
GRPC_CHECK(grpc_parse_uri(*uri, &resolved_addr_));
args_.address = &resolved_addr_;
- args_.deadline = Timestamp::Now() + Duration::Seconds(5);
+ args_.deadline = Timestamp::Now() + Duration::Seconds(15);
args_.channel_args = channel_args();
grpc_channel_credentials* channel_creds = nullptr;
switch (GetParam()) {
}
grpc_server* server_;
- Server* core_server_;
ChaoticGoodConnector::Args args_;
ChaoticGoodConnector::Result connecting_result_;
bool connecting_successful_ = false;