Skip to content

Commit 63e5d91

Browse files
authored
Envoy update to 467ee8f (Jun 30, 2026) (#1554)
- Update NH to the latest Envoy commit. - Migrate NH's codebase from absl::optional, absl::nullopt to std::optional, std::nullopt to accommodate envoyproxy/envoy@8873877. - Suppress nodiscard warnings like what envoyproxy/envoy@6976f62 does. Signed-off-by: jiajunye <jiajunye@google.com> Signed-off-by: Jason Ye <jiajunye@google.com>
1 parent f7cf3fe commit 63e5d91

61 files changed

Lines changed: 258 additions & 269 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

bazel/repositories.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
22

3-
ENVOY_COMMIT = "c8c459d3da9ef0cd02e5bd8dd05bd278614a3306"
4-
ENVOY_SHA = "514f70c62c740dd0576c2da6177c81d195b81bd1132df384e308b04defc60e30"
3+
ENVOY_COMMIT = "467ee8f7e8a2eb982d666eff439f180740f48767"
4+
ENVOY_SHA = "caecbb91f974bddd8770a28be5b57abaf19c7e49d3d075549eaec1409da61f63"
55

66
HDR_HISTOGRAM_C_VERSION = "0.11.8" # June 18th, 2025
77
HDR_HISTOGRAM_C_SHA = "bb95351a6a8b242dc9be1f28562761a84d4cf0a874ffc90a9b630770a6468e94"

include/nighthawk/client/options.h

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <chrono>
44
#include <map>
55
#include <memory>
6+
#include <optional>
67
#include <string>
78

89
#include "envoy/common/pure.h"
@@ -20,8 +21,6 @@
2021

2122
#include "api/client/options.pb.h"
2223

23-
#include "absl/types/optional.h"
24-
2524
namespace Nighthawk {
2625
namespace Client {
2726

@@ -39,21 +38,21 @@ class Options {
3938
virtual std::chrono::seconds duration() const PURE;
4039
virtual std::chrono::seconds timeout() const PURE;
4140
// URI is absent when the user specified --multi-target-* instead.
42-
virtual absl::optional<std::string> uri() const PURE;
41+
virtual std::optional<std::string> uri() const PURE;
4342

4443
// The protocol to encapsulate requests in.
4544
// Defaults to HTTP/1.1 if the user doesn't make an explicit selection.
4645
virtual Envoy::Http::Protocol protocol() const PURE;
4746

4847
// The following sets specific protocol options for http3.
49-
virtual const absl::optional<envoy::config::core::v3::Http3ProtocolOptions>&
48+
virtual const std::optional<envoy::config::core::v3::Http3ProtocolOptions>&
5049
http3ProtocolOptions() const PURE;
5150

5251
// HTTP CONNECT/CONNECT-UDP Tunneling related options.
5352
virtual Envoy::Http::Protocol tunnelProtocol() const PURE;
5453
virtual std::string tunnelUri() const PURE;
5554
virtual uint32_t encapPort() const PURE;
56-
virtual const absl::optional<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>
55+
virtual const std::optional<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>
5756
tunnelTlsContext() const PURE;
5857

5958
virtual std::string concurrency() const PURE;
@@ -67,9 +66,8 @@ class Options {
6766
virtual uint32_t requestBodySize() const PURE;
6867
virtual const envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext&
6968
tlsContext() const PURE;
70-
virtual const absl::optional<envoy::config::core::v3::BindConfig>&
71-
upstreamBindConfig() const PURE;
72-
virtual const absl::optional<envoy::config::core::v3::TransportSocket>&
69+
virtual const std::optional<envoy::config::core::v3::BindConfig>& upstreamBindConfig() const PURE;
70+
virtual const std::optional<envoy::config::core::v3::TransportSocket>&
7371
transportSocket() const PURE;
7472
virtual uint32_t maxPendingRequests() const PURE;
7573
virtual uint32_t maxActiveRequests() const PURE;
@@ -82,7 +80,7 @@ class Options {
8280
virtual nighthawk::client::SequencerIdleStrategy::SequencerIdleStrategyOptions
8381
sequencerIdleStrategy() const PURE;
8482
virtual std::string requestSource() const PURE;
85-
virtual const absl::optional<envoy::config::core::v3::TypedExtensionConfig>&
83+
virtual const std::optional<envoy::config::core::v3::TypedExtensionConfig>&
8684
requestSourcePluginConfig() const PURE;
8785
virtual std::string trace() const PURE;
8886
virtual nighthawk::client::H1ConnectionReuseStrategy::H1ConnectionReuseStrategyOptions
@@ -104,8 +102,8 @@ class Options {
104102
virtual Envoy::Protobuf::Duration statsFlushIntervalDuration() const PURE;
105103
virtual std::string responseHeaderWithLatencyInput() const PURE;
106104

107-
virtual absl::optional<Envoy::SystemTime> scheduled_start() const PURE;
108-
virtual absl::optional<std::string> executionId() const PURE;
105+
virtual std::optional<Envoy::SystemTime> scheduled_start() const PURE;
106+
virtual std::optional<std::string> executionId() const PURE;
109107
virtual const std::vector<envoy::config::core::v3::TypedExtensionConfig>&
110108
userDefinedOutputPluginConfigs() const PURE;
111109

include/nighthawk/client/output_collector.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
#pragma once
22

33
#include <memory>
4+
#include <optional>
45

56
#include "envoy/common/pure.h"
67
#include "envoy/common/time.h"
78

89
#include "nighthawk/common/statistic.h"
910

10-
#include "absl/types/optional.h"
11-
1211
namespace Nighthawk {
1312
namespace Client {
1413

@@ -34,7 +33,7 @@ class OutputCollector {
3433
absl::string_view name, const std::vector<StatisticPtr>& statistics,
3534
const std::map<std::string, uint64_t>& counters,
3635
const std::chrono::nanoseconds execution_duration,
37-
const absl::optional<Envoy::SystemTime>& first_acquisition_time,
36+
const std::optional<Envoy::SystemTime>& first_acquisition_time,
3837
const std::vector<nighthawk::client::UserDefinedOutput>& user_defined_output_results) PURE;
3938
/**
4039
* Directly sets the output value.

include/nighthawk/common/rate_limiter.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
#include <chrono>
44
#include <memory>
5+
#include <optional>
56

67
#include "envoy/common/pure.h"
78
#include "envoy/common/time.h"
89

9-
#include "absl/types/optional.h"
10-
1110
namespace Nighthawk {
1211

1312
/**
@@ -35,9 +34,9 @@ class RateLimiter {
3534
virtual Envoy::TimeSource& timeSource() PURE;
3635

3736
/**
38-
* @return absl::optional<Envoy::SystemTime> Time of the first acquisition, if any.
37+
* @return std::optional<Envoy::SystemTime> Time of the first acquisition, if any.
3938
*/
40-
virtual absl::optional<Envoy::SystemTime> firstAcquisitionTime() const PURE;
39+
virtual std::optional<Envoy::SystemTime> firstAcquisitionTime() const PURE;
4140

4241
/**
4342
* @return std::chrono::nanoseconds elapsed since the first call to tryAcquireOne(). Used by some
@@ -70,4 +69,4 @@ class DiscreteNumericDistributionSampler {
7069

7170
using DiscreteNumericDistributionSamplerPtr = std::unique_ptr<DiscreteNumericDistributionSampler>;
7271

73-
} // namespace Nighthawk
72+
} // namespace Nighthawk

source/client/benchmark_client_impl.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ BenchmarkClientHttpImpl::BenchmarkClientHttpImpl(
110110
}
111111

112112
void BenchmarkClientHttpImpl::terminate() {
113-
absl::optional<Envoy::Upstream::HttpPoolData> pool_data = pool();
113+
std::optional<Envoy::Upstream::HttpPoolData> pool_data = pool();
114114
if (pool_data.has_value() && pool_data.value().hasActiveConnections()) {
115115
// We don't report what happens after this call in the output, but latencies may still be
116116
// reported via callbacks. This may happen after a long time (60s), which HdrHistogram can't
@@ -151,7 +151,7 @@ StatisticPtrMap BenchmarkClientHttpImpl::statistics() const {
151151
};
152152

153153
bool BenchmarkClientHttpImpl::tryStartRequest(CompletionCallback caller_completion_callback) {
154-
absl::optional<Envoy::Upstream::HttpPoolData> pool_data = pool();
154+
std::optional<Envoy::Upstream::HttpPoolData> pool_data = pool();
155155
if (!pool_data.has_value()) {
156156
return false;
157157
}

source/client/benchmark_client_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ class BenchmarkClientHttpImpl : public BenchmarkClient,
147147
void handleResponseData(const Envoy::Buffer::Instance& response_data) override;
148148

149149
// Helpers
150-
absl::optional<::Envoy::Upstream::HttpPoolData> pool() {
150+
std::optional<::Envoy::Upstream::HttpPoolData> pool() {
151151
const auto thread_local_cluster = cluster_manager_->getThreadLocalCluster(cluster_name_);
152152
Envoy::Upstream::HostConstSharedPtr host =
153153
Envoy::Upstream::LoadBalancer::onlyAllowSynchronousHostSelection(

source/client/factories_impl.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ BenchmarkClientPtr BenchmarkClientFactoryImpl::create(
5555
api, dispatcher, scope, statistic, options_.protocol(), cluster_manager, tracer, cluster_name,
5656
request_generator.get(), !options_.openLoop(), options_.responseHeaderWithLatencyInput(),
5757
std::move(user_defined_output_plugins));
58-
auto request_options = options_.toCommandLineOptions()->request_options();
5958
benchmark_client->setConnectionLimit(options_.connections());
6059
benchmark_client->setMaxPendingRequests(options_.maxPendingRequests());
6160
benchmark_client->setMaxActiveRequests(options_.maxActiveRequests());

source/client/options_impl.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <cerrno>
44
#include <cstdint>
55
#include <exception>
6+
#include <optional>
67

78
#include "external/envoy/source/common/protobuf/message_validator_impl.h"
89
#include "external/envoy/source/common/protobuf/protobuf.h"
@@ -18,7 +19,6 @@
1819
#include "absl/strings/numbers.h"
1920
#include "absl/strings/str_cat.h"
2021
#include "absl/strings/str_split.h"
21-
#include "absl/types/optional.h"
2222
#include "fmt/ranges.h"
2323

2424
namespace Nighthawk {
@@ -1094,7 +1094,7 @@ CommandLineOptionsPtr OptionsImpl::toCommandLineOptionsInternal() const {
10941094
}
10951095

10961096
// Only set the tls context if needed, to avoid a warning being logged about field deprecation.
1097-
// Ideally this would follow the way transport_socket uses absl::optional below.
1097+
// Ideally this would follow the way transport_socket uses std::optional below.
10981098
// But as this field is about to get eliminated this minimal effort shortcut may be more suitable.
10991099
if (tls_context_.ByteSizeLong() > 0) {
11001100
*(command_line_options->mutable_tls_context()) = tls_context_;

source/client/options_impl.h

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <chrono>
44
#include <cmath>
55
#include <cstdint>
6+
#include <optional>
67
#include <string>
78

89
#include "nighthawk/client/options.h"
@@ -11,7 +12,6 @@
1112
#include "external/envoy/source/common/common/logger.h"
1213
#include "external/envoy/source/common/protobuf/protobuf.h"
1314

14-
#include "absl/types/optional.h"
1515
#include "tclap/CmdLine.h"
1616

1717
namespace Nighthawk {
@@ -36,19 +36,19 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
3636
uint32_t connections() const override { return connections_; }
3737
std::chrono::seconds duration() const override { return std::chrono::seconds(duration_); }
3838
std::chrono::seconds timeout() const override { return std::chrono::seconds(timeout_); }
39-
absl::optional<std::string> uri() const override { return uri_; }
39+
std::optional<std::string> uri() const override { return uri_; }
4040

4141
Envoy::Http::Protocol protocol() const override;
4242

4343
Envoy::Http::Protocol tunnelProtocol() const override;
4444
std::string tunnelUri() const override { return tunnel_uri_; }
4545
uint32_t encapPort() const override { return encap_port_; }
46-
virtual const absl::optional<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>
46+
virtual const std::optional<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>
4747
tunnelTlsContext() const override {
4848
return tunnel_tls_context_;
4949
}
5050

51-
const absl::optional<envoy::config::core::v3::Http3ProtocolOptions>&
51+
const std::optional<envoy::config::core::v3::Http3ProtocolOptions>&
5252
http3ProtocolOptions() const override {
5353
return http3_protocol_options_;
5454
}
@@ -70,10 +70,10 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
7070
tlsContext() const override {
7171
return tls_context_;
7272
};
73-
const absl::optional<envoy::config::core::v3::BindConfig>& upstreamBindConfig() const override {
73+
const std::optional<envoy::config::core::v3::BindConfig>& upstreamBindConfig() const override {
7474
return upstream_bind_config_;
7575
}
76-
const absl::optional<envoy::config::core::v3::TransportSocket>& transportSocket() const override {
76+
const std::optional<envoy::config::core::v3::TransportSocket>& transportSocket() const override {
7777
return transport_socket_;
7878
}
7979
uint32_t maxPendingRequests() const override { return max_pending_requests_; }
@@ -85,7 +85,7 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
8585
return sequencer_idle_strategy_;
8686
}
8787
std::string requestSource() const override { return request_source_; }
88-
const absl::optional<envoy::config::core::v3::TypedExtensionConfig>&
88+
const std::optional<envoy::config::core::v3::TypedExtensionConfig>&
8989
requestSourcePluginConfig() const override {
9090
return request_source_plugin_config_;
9191
}
@@ -121,8 +121,8 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
121121
std::string responseHeaderWithLatencyInput() const override {
122122
return latency_response_header_name_;
123123
};
124-
absl::optional<Envoy::SystemTime> scheduled_start() const override { return scheduled_start_; }
125-
absl::optional<std::string> executionId() const override { return execution_id_; }
124+
std::optional<Envoy::SystemTime> scheduled_start() const override { return scheduled_start_; }
125+
std::optional<std::string> executionId() const override { return execution_id_; }
126126

127127
const std::vector<envoy::config::core::v3::TypedExtensionConfig>&
128128
userDefinedOutputPluginConfigs() const override {
@@ -140,19 +140,19 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
140140
uint32_t connections_{100};
141141
uint32_t duration_{5};
142142
uint32_t timeout_{30};
143-
absl::optional<std::string> uri_;
143+
std::optional<std::string> uri_;
144144

145145
bool h2_{false}; // Deprecated.
146146
nighthawk::client::Protocol::ProtocolOptions protocol_{nighthawk::client::Protocol::HTTP1};
147-
absl::optional<envoy::config::core::v3::Http3ProtocolOptions> http3_protocol_options_;
147+
std::optional<envoy::config::core::v3::Http3ProtocolOptions> http3_protocol_options_;
148148

149149
std::string concurrency_;
150150

151151
// Tunnel related options.
152152
nighthawk::client::Protocol::ProtocolOptions tunnel_protocol_{nighthawk::client::Protocol::HTTP1};
153153
std::string tunnel_uri_;
154154
uint32_t encap_port_{0};
155-
absl::optional<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>
155+
std::optional<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>
156156
tunnel_tls_context_;
157157

158158
nighthawk::client::Verbosity::VerbosityOptions verbosity_{nighthawk::client::Verbosity::WARN};
@@ -167,9 +167,9 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
167167
std::vector<std::string> request_headers_;
168168
uint32_t request_body_size_{0};
169169
envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext tls_context_;
170-
absl::optional<envoy::config::core::v3::BindConfig> upstream_bind_config_;
171-
absl::optional<envoy::config::core::v3::TransportSocket> transport_socket_;
172-
absl::optional<envoy::config::core::v3::TypedExtensionConfig> request_source_plugin_config_;
170+
std::optional<envoy::config::core::v3::BindConfig> upstream_bind_config_;
171+
std::optional<envoy::config::core::v3::TransportSocket> transport_socket_;
172+
std::optional<envoy::config::core::v3::TypedExtensionConfig> request_source_plugin_config_;
173173

174174
uint32_t max_pending_requests_{0};
175175
// This default is based the minimum recommendation for SETTINGS_MAX_CONCURRENT_STREAMS over at
@@ -200,8 +200,8 @@ class OptionsImpl : public Options, public Envoy::Logger::Loggable<Envoy::Logger
200200
uint32_t stats_flush_interval_{5};
201201
Envoy::Protobuf::Duration stats_flush_interval_duration_;
202202
std::string latency_response_header_name_;
203-
absl::optional<Envoy::SystemTime> scheduled_start_;
204-
absl::optional<std::string> execution_id_;
203+
std::optional<Envoy::SystemTime> scheduled_start_;
204+
std::optional<std::string> execution_id_;
205205
std::vector<envoy::config::core::v3::TypedExtensionConfig> user_defined_output_plugin_configs_;
206206
};
207207

source/client/output_collector_impl.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void OutputCollectorImpl::addResult(
2727
absl::string_view name, const std::vector<StatisticPtr>& statistics,
2828
const std::map<std::string, uint64_t>& counters,
2929
const std::chrono::nanoseconds execution_duration,
30-
const absl::optional<Envoy::SystemTime>& first_acquisition_time,
30+
const std::optional<Envoy::SystemTime>& first_acquisition_time,
3131
const std::vector<nighthawk::client::UserDefinedOutput>& user_defined_output_results) {
3232
auto result = output_.add_results();
3333
result->set_name(name.data(), name.size());

0 commit comments

Comments
 (0)