Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

config: full delta xDS (including ADS) support #7293

Merged
merged 113 commits into from
Oct 1, 2019
Merged
Show file tree
Hide file tree
Changes from 109 commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
6702453
WIP snapshot for motivating the various refactor PRs it entails
fredlas Mar 26, 2019
87d4004
resolve merge conflict
fredlas Mar 26, 2019
f290ae7
quick snapshot so i can merge the detemplatization PR
fredlas Apr 2, 2019
30926f8
resolve merge conflict
fredlas Apr 2, 2019
d483936
working for non-agg delta, agg delta should in theory work too
fredlas Apr 4, 2019
860c03c
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Apr 4, 2019
1df7db5
mostly working snapshot
fredlas Apr 26, 2019
33b0103
aahhhhhh have to merge to get bazel working again
fredlas May 3, 2019
916a03d
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 3, 2019
bc7e515
CDS integration test working again
fredlas May 3, 2019
164ac09
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 3, 2019
0f7bcdb
CDS integration passes with 6729 merged
fredlas May 3, 2019
62f42dc
lol polymorphism
fredlas May 3, 2019
0806842
fix unit tests
fredlas May 3, 2019
279355b
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 3, 2019
fd8b1be
small XdsGrpcContext comment change
fredlas May 3, 2019
d7d5b14
quick commit of beginnings of subclass stuff before merge
fredlas May 10, 2019
6768c5c
resolve merge conflict
fredlas May 10, 2019
67ccc26
tests partially passing
fredlas May 10, 2019
638984e
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 10, 2019
d24744c
revert some test changes
fredlas May 10, 2019
804459c
revert establishNewStream idempotency
fredlas May 13, 2019
c77d6b9
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 13, 2019
83dfc89
DISALLOW_COPY_AND_ASSIGN saves lives
fredlas May 22, 2019
714d744
resolve conflict
fredlas May 22, 2019
0b96320
snapshot
fredlas May 22, 2019
0f8a8f1
documentation
fredlas May 22, 2019
399f815
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 22, 2019
cd5134e
resolve conflict
fredlas May 23, 2019
d04b5da
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 23, 2019
8c4e94b
is_delta plumbing stuff to make delta better fit with ADS
fredlas May 24, 2019
e902a13
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 24, 2019
8d219e7
add WatchMap initial untested implementation
fredlas May 28, 2019
f133252
resolve conflict
fredlas May 28, 2019
b94c2ee
merge cleaned up WatchMap
fredlas May 30, 2019
6624140
update to make a bit more use of WatchMap, not yet compiling
fredlas May 30, 2019
bd24aee
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 30, 2019
4e174c1
config: move SubscriptionCallbacks to ctor, pointers become refs
fredlas May 31, 2019
beb7a6b
Merge remote-tracking branch 'upstream/master' into OWN_callbacks
fredlas May 31, 2019
1bcbdf6
starting to move stats to DeltaSubscriptionImpl
fredlas May 31, 2019
c56caf6
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 31, 2019
de02e59
whoops missed scoped RDS
fredlas May 31, 2019
c9dfcf7
merge ctor SubscriptionCallbacks and consolidate into SubscriptionStuff
fredlas May 31, 2019
0ed44f1
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas May 31, 2019
ccd8311
fix addWatch logic with cute recursion
fredlas Jun 3, 2019
d4a81b1
merge conflict and get tests compiling again with is_delta arg
fredlas Jun 3, 2019
5e551a5
align GrpcDeltaXdsContext::start usage with GrpcMuxImpl, most tests pass
fredlas Jun 4, 2019
347a2ab
resolve conflict
fredlas Jun 4, 2019
81864b9
lol resolve another conflict, but for a good cause
fredlas Jun 4, 2019
02dff3e
fix subscription_impl tests, non-delta ones mocked out the code that …
fredlas Jun 6, 2019
8a4f504
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jun 6, 2019
c0c3d98
allow pausing nonexistent subs, also pick up WatchMap wildcard
fredlas Jun 6, 2019
34f439b
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jun 6, 2019
2a6beda
merge the switch of WatchMap from token to pointer
fredlas Jun 7, 2019
6d1b5f7
integrate detokenized WatchMap, had to introduce WatchMap interface
fredlas Jun 10, 2019
a4a5094
resolve conflict
fredlas Jun 10, 2019
6f5b052
yay delta ADS works and all tests pass
fredlas Jun 15, 2019
fe2f4e3
merge conflict, protect another couple maybe null adsMux pauses
fredlas Jun 15, 2019
b3c98e7
rename GrpcDeltaXdsContext to NewGrpcMuxImpl
fredlas Jun 15, 2019
7bee783
add to version_history
fredlas Jun 15, 2019
e1743c8
appease spellcheck
fredlas Jun 17, 2019
06cf88d
remove not-yet-used SubscriptionState interface
fredlas Jun 17, 2019
f54c4bc
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jun 17, 2019
540110c
add to arch_overview and config overview docs
fredlas Jun 17, 2019
9ea226e
add link to xds_protocol.rst
fredlas Jun 17, 2019
eee089a
move arguments
fredlas Jul 10, 2019
72c99d1
merge conflicts
fredlas Jul 10, 2019
1907e62
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jul 11, 2019
7c298bd
move release note to 1.12
fredlas Jul 11, 2019
6f465a8
clean up WatchMap, DeltaSubscriptionImpl becomes more simply RAIIy
fredlas Jul 17, 2019
3a79955
merge conflict
fredlas Jul 19, 2019
019c911
another merge conflict
fredlas Jul 19, 2019
c3628c4
add watch_map_test
fredlas Jul 19, 2019
2ac7d0b
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jul 19, 2019
512f4f9
RELEASE_ASSERT for impossible broken case
fredlas Jul 22, 2019
022bf3a
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jul 22, 2019
4f50d89
fix test failed by merge conflict
fredlas Jul 22, 2019
861e434
fix CI complaints
fredlas Jul 22, 2019
1460c15
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jul 22, 2019
23291a4
merge conflict
fredlas Jul 29, 2019
f21baf9
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Jul 29, 2019
105f7be
another merge conflict
fredlas Aug 12, 2019
f37479d
merge conflict
fredlas Aug 14, 2019
770f48d
merge conflict, scoped_rds_test still broken by 7451
fredlas Aug 23, 2019
c70e7b0
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Aug 23, 2019
a972cb0
fix scoped_rds_test
fredlas Aug 23, 2019
acb6bc1
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Aug 23, 2019
0ca1b0a
snapshot
fredlas Aug 29, 2019
0093de5
merge conflict
fredlas Aug 29, 2019
933fea5
fix breakage, protect another adsMux pause call against null
fredlas Aug 30, 2019
102fec8
merge conflict
fredlas Aug 30, 2019
e45ae53
fix Cleanup i mistakenly brought inside an if, thanks very very much …
fredlas Sep 6, 2019
f0a6810
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 6, 2019
5b7489b
snapshot
fredlas Sep 9, 2019
280e842
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 9, 2019
a7a59ca
fix typo in docs, deta to delta
fredlas Sep 9, 2019
c1de3f7
clang_tidy
fredlas Sep 9, 2019
c873f6a
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 9, 2019
f0e7838
merge master
fredlas Sep 11, 2019
3d14b16
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 11, 2019
4226627
a little cleanup in new_grpc_mux_impl
fredlas Sep 12, 2019
aba71b0
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 12, 2019
60dfeab
fix merge drift revealed by fix of CONSTRUCT_ON_FIRST_USE
fredlas Sep 19, 2019
1ac8fb4
merge conflict with 8152
fredlas Sep 19, 2019
dc2fc7c
the pedantic spellchecker has decided that unpaused isnt a word
fredlas Sep 19, 2019
a12d914
disable more instances of set_node_on_first_message_only
fredlas Sep 19, 2019
82b08e9
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 27, 2019
dcf287c
rearrange update_attempt inc, assert on nonexistent sub, add nonexist…
fredlas Sep 27, 2019
d32b4e0
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 27, 2019
590e800
a couple of clang_tidy things
fredlas Sep 30, 2019
9ab78de
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Sep 30, 2019
6be011e
correct and simplify pausable_ack_queue RELEASE_ASSERTs
fredlas Oct 1, 2019
aace5dc
Merge remote-tracking branch 'upstream/master' into ADS_incremental
fredlas Oct 1, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions api/xds_protocol.rst
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,8 @@ An example minimal ``bootstrap.yaml`` fragment for ADS configuration is:
admin:
...

.. _xds_protocol_delta:

Incremental xDS
~~~~~~~~~~~~~~~

Expand Down
26 changes: 26 additions & 0 deletions docs/root/configuration/overview/v2_overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,32 @@ to
with the effect that the LDS stream will be directed to *some_ads_cluster* over
the shared ADS channel.

.. _config_overview_v2_delta:

Delta endpoints
---------------

The REST, filesystem, and original gRPC xDS implementations all deliver "state of the world" updates:
every CDS update must contain every cluster, with the absence of a cluster from an update implying
that the cluster is gone. For Envoy deployments with huge amounts of resources and even a trickle of
churn, these state-of-the-world updates can be cumbersome.

As of 1.12.0, Envoy supports a "delta" variant of xDS (including ADS), where updates only contain
resources added/changed/removed. Delta xDS is a gRPC (only) protocol. Delta uses different
request/response protos than SotW (DeltaDiscovery{Request,Response}); see
:repo:`discovery.proto <api/envoy/api/v2/discovery.proto>`. Conceptually, delta should be viewed as
a new xDS transport type: there is static, filesystem, REST, gRPC-SotW, and now gRPC-delta.
(Envoy's implementation of the gRPC-SotW/delta client happens to share most of its code between the
two, and something similar is likely possible on the server side. However, they are in fact
incompatible protocols.
:ref:`The specification of the delta xDS protocol's behavior is here <xds_protocol_delta>`.)

To use delta, simply set the api_type field of your
:ref:`ApiConfigSource <envoy_api_msg_core.ApiConfigSource>` proto(s) to DELTA_GRPC.
That works for both xDS and ADS; for ADS, it's the api_type field of
:ref:`DynamicResources.ads_config <envoy_api_field_config.bootstrap.v2.Bootstrap.dynamic_resources>`,
as described in the previous section.

.. _config_overview_v2_mgmt_con_issues:

Management Server Unreachability
Expand Down
12 changes: 12 additions & 0 deletions docs/root/intro/arch_overview/operations/dynamic_configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,15 @@ The :ref:`secret discovery service (SDS) <config_secret_discovery_service>` laye
by which Envoy can discover cryptographic secrets (certificate plus private key, TLS session
ticket keys) for its listeners, as well as configuration of peer certificate validation logic
(trusted root certs, revocations, etc).

Aggregated xDS ("ADS")
-----------------------------

EDS, CDS, etc. are each separate services, with different REST/gRPC service names, e.g. StreamListeners, StreamSecrets. For users looking to enforce the order in which resources of different types reach Envoy, there is aggregated xDS, a single gRPC service that carries all resource types in a single gRPC stream. (ADS is only supported by gRPC). :ref:`More details about ADS <config_overview_v2_ads>`.

.. _arch_overview_dynamic_config_delta:

Delta gRPC xDS
-----------------------------

Standard xDS is "state-of-the-world": every CDS update must contain every cluster, with the absence of a cluster from an update implying that the cluster is gone. As of 1.12.0, Envoy supports a "delta" variant of xDS (including ADS), where updates only contain resources added/changed/removed. Delta xDS is a new protocol, with request/response protos different from SotW; existing control plane servers will need support added. :ref:`More details about delta <config_overview_v2_delta>`.
1 change: 1 addition & 0 deletions docs/root/intro/version_history.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Version history
* admin: added config dump support for Secret Discovery Service :ref:`SecretConfigDump <envoy_api_msg_admin.v2alpha.SecretsConfigDump>`.
* api: added ::ref:`set_node_on_first_message_only <envoy_api_field_core.ApiConfigSource.set_node_on_first_message_only>` option to omit the node identifier from the subsequent discovery requests on the same stream.
* buffer filter: the buffer filter populates content-length header if not present, behavior can be disabled using the runtime feature `envoy.reloadable_features.buffer_filter_populate_content_length`.
* config: added support for :ref:`delta xDS <arch_overview_dynamic_config_delta>` (including ADS) delivery
* config: enforcing that terminal filters (e.g. HttpConnectionManager for L4, router for L7) be the last in their respective filter chains.
* config: added access log :ref:`extension filter<envoy_api_field_config.filter.accesslog.v2.AccessLogFilter.extension_filter>`.
* config: added support for :option:`--reject-unknown-dynamic-fields`, providing independent control
Expand Down
17 changes: 0 additions & 17 deletions include/envoy/config/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -65,20 +65,3 @@ envoy_cc_library(
"//source/common/protobuf",
],
)

envoy_cc_library(
name = "watch_map_interface",
hdrs = ["watch_map.h"],
deps = [
":subscription_interface",
],
)

envoy_cc_library(
name = "xds_grpc_context_interface",
hdrs = ["xds_grpc_context.h"],
deps = [
":subscription_interface",
"//source/common/protobuf",
],
)
40 changes: 40 additions & 0 deletions include/envoy/config/grpc_mux.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ class GrpcMuxWatch {

using GrpcMuxWatchPtr = std::unique_ptr<GrpcMuxWatch>;

struct Watch;

/**
* Manage one or more gRPC subscriptions on a single stream to management server. This can be used
* for a single xDS API, e.g. EDS, or to combined multiple xDS APIs for ADS.
Expand Down Expand Up @@ -111,6 +113,13 @@ class GrpcMux {
*/
virtual void resume(const std::string& type_url) PURE;

// For delta
virtual Watch* addOrUpdateWatch(const std::string& type_url, Watch* watch,
fredlas marked this conversation as resolved.
Show resolved Hide resolved
const std::set<std::string>& resources,
SubscriptionCallbacks& callbacks,
std::chrono::milliseconds init_fetch_timeout) PURE;
virtual void removeWatch(const std::string& type_url, Watch* watch) PURE;

/**
* Retrieves the current pause state as set by pause()/resume().
* @param type_url type URL corresponding to xDS API, e.g.
Expand All @@ -121,6 +130,37 @@ class GrpcMux {
};

using GrpcMuxPtr = std::unique_ptr<GrpcMux>;
using GrpcMuxSharedPtr = std::shared_ptr<GrpcMux>;

/**
* A grouping of callbacks that a GrpcMux should provide to its GrpcStream.
*/
template <class ResponseProto> class GrpcStreamCallbacks {
public:
virtual ~GrpcStreamCallbacks() = default;

/**
* For the GrpcStream to prompt the context to take appropriate action in response to the
* gRPC stream having been successfully established.
*/
virtual void onStreamEstablished() PURE;

/**
* For the GrpcStream to prompt the context to take appropriate action in response to
* failure to establish the gRPC stream.
*/
virtual void onEstablishmentFailure() PURE;

/**
* For the GrpcStream to pass received protos to the context.
*/
virtual void onDiscoveryResponse(std::unique_ptr<ResponseProto>&& message) PURE;

/**
* For the GrpcStream to call when its rate limiting logic allows more requests to be sent.
*/
virtual void onWriteable() PURE;
};

} // namespace Config
} // namespace Envoy
2 changes: 1 addition & 1 deletion include/envoy/config/subscription.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class Subscription {
* @param resources vector of resource names to fetch. It's a (not unordered_)set so that it can
* be passed to std::set_difference, which must be given sorted collections.
*/
virtual void updateResources(const std::set<std::string>& update_to_these_names) PURE;
virtual void updateResourceInterest(const std::set<std::string>& update_to_these_names) PURE;
};

using SubscriptionPtr = std::unique_ptr<Subscription>;
Expand Down
2 changes: 1 addition & 1 deletion include/envoy/config/subscription_factory.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class SubscriptionFactory {
virtual SubscriptionPtr
subscriptionFromConfigSource(const envoy::api::v2::core::ConfigSource& config,
absl::string_view type_url, Stats::Scope& scope,
SubscriptionCallbacks& callbacks) PURE;
SubscriptionCallbacks& callbacks, bool is_delta) PURE;
};

} // namespace Config
Expand Down
42 changes: 0 additions & 42 deletions include/envoy/config/xds_grpc_context.h

This file was deleted.

2 changes: 1 addition & 1 deletion include/envoy/router/route_config_provider_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class RouteConfigProviderManager {
virtual RouteConfigProviderPtr createRdsRouteConfigProvider(
const envoy::config::filter::network::http_connection_manager::v2::Rds& rds,
Server::Configuration::FactoryContext& factory_context, const std::string& stat_prefix,
Init::Manager& init_manager) PURE;
Init::Manager& init_manager, bool is_delta) PURE;

/**
* Get a RouteConfigSharedPtr for a statically defined route. Ownership is as described for
Expand Down
6 changes: 4 additions & 2 deletions include/envoy/server/listener_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ class ListenerComponentFactory {
* @return an LDS API provider.
* @param lds_config supplies the management server configuration.
*/
virtual LdsApiPtr createLdsApi(const envoy::api::v2::core::ConfigSource& lds_config) PURE;
virtual LdsApiPtr createLdsApi(const envoy::api::v2::core::ConfigSource& lds_config,
bool is_delta) PURE;

/**
* Creates a socket.
Expand Down Expand Up @@ -128,7 +129,8 @@ class ListenerManager {
* pieces of the server existing.
* @param lds_config supplies the management server configuration.
*/
virtual void createLdsApi(const envoy::api::v2::core::ConfigSource& lds_config) PURE;
virtual void createLdsApi(const envoy::api::v2::core::ConfigSource& lds_config,
bool is_delta) PURE;

/**
* @return std::vector<std::reference_wrapper<Network::ListenerConfig>> a list of the currently
Expand Down
12 changes: 7 additions & 5 deletions include/envoy/upstream/cluster_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -180,14 +180,14 @@ class ClusterManager {
virtual const envoy::api::v2::core::BindConfig& bindConfig() const PURE;

/**
* Return a reference to the singleton ADS provider for upstream control plane muxing of xDS. This
* is treated somewhat as a special case in ClusterManager, since it does not relate logically to
* the management of clusters but instead is required early in ClusterManager/server
* Returns a shared_ptr to the singleton xDS-over-gRPC provider for upstream control plane muxing
* of xDS. This is treated somewhat as a special case in ClusterManager, since it does not relate
* logically to the management of clusters but instead is required early in ClusterManager/server
* initialization and in various sites that need ClusterManager for xDS API interfacing.
*
* @return GrpcMux& ADS API provider referencee.
*/
virtual Config::GrpcMux& adsMux() PURE;
virtual Config::GrpcMuxSharedPtr adsMux() PURE;

/**
* @return Grpc::AsyncClientManager& the cluster manager's gRPC client manager.
Expand Down Expand Up @@ -225,6 +225,8 @@ class ClusterManager {
virtual Config::SubscriptionFactory& subscriptionFactory() PURE;

virtual std::size_t warmingClusterCount() const PURE;

virtual bool xdsIsDelta() const PURE;
fredlas marked this conversation as resolved.
Show resolved Hide resolved
};

using ClusterManagerPtr = std::unique_ptr<ClusterManager>;
Expand Down Expand Up @@ -297,7 +299,7 @@ class ClusterManagerFactory {
/**
* Create a CDS API provider from configuration proto.
*/
virtual CdsApiPtr createCds(const envoy::api::v2::core::ConfigSource& cds_config,
virtual CdsApiPtr createCds(const envoy::api::v2::core::ConfigSource& cds_config, bool is_delta,
ClusterManager& cm) PURE;

/**
Expand Down
40 changes: 32 additions & 8 deletions source/common/config/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ envoy_cc_library(
srcs = ["delta_subscription_impl.cc"],
hdrs = ["delta_subscription_impl.h"],
deps = [
":delta_subscription_state_lib",
":grpc_stream_lib",
":new_grpc_mux_lib",
":utility_lib",
"//include/envoy/config:subscription_interface",
"//include/envoy/grpc:async_client_interface",
Expand All @@ -90,6 +90,7 @@ envoy_cc_library(
srcs = ["delta_subscription_state.cc"],
hdrs = ["delta_subscription_state.h"],
deps = [
":pausable_ack_queue_lib",
"//include/envoy/config:subscription_interface",
"//include/envoy/event:dispatcher_interface",
"//source/common/common:assert_lib",
Expand Down Expand Up @@ -125,7 +126,6 @@ envoy_cc_library(
":utility_lib",
"//include/envoy/config:grpc_mux_interface",
"//include/envoy/config:subscription_interface",
"//include/envoy/config:xds_grpc_context_interface",
"//include/envoy/grpc:async_client_interface",
"//include/envoy/upstream:cluster_manager_interface",
"//source/common/common:backoff_lib",
Expand Down Expand Up @@ -217,6 +217,20 @@ envoy_cc_library(
],
)

envoy_cc_library(
name = "new_grpc_mux_lib",
srcs = ["new_grpc_mux_impl.cc"],
hdrs = ["new_grpc_mux_impl.h"],
deps = [
":delta_subscription_state_lib",
":grpc_stream_lib",
":pausable_ack_queue_lib",
":watch_map_lib",
"//include/envoy/event:dispatcher_interface",
"//include/envoy/grpc:async_client_interface",
],
)

envoy_cc_library(
name = "http_subscription_lib",
srcs = ["http_subscription_impl.cc"],
Expand Down Expand Up @@ -261,6 +275,16 @@ envoy_cc_library(
],
)

envoy_cc_library(
name = "pausable_ack_queue_lib",
srcs = ["pausable_ack_queue.cc"],
hdrs = ["pausable_ack_queue.h"],
deps = [
"//source/common/common:assert_lib",
"@envoy_api//envoy/api/v2:discovery_cc",
],
)

envoy_cc_library(
name = "protobuf_link_hacks",
hdrs = ["protobuf_link_hacks.h"],
Expand Down Expand Up @@ -300,12 +324,6 @@ envoy_cc_library(
],
)

envoy_cc_library(
name = "resources_lib",
hdrs = ["resources.h"],
deps = ["//source/common/singleton:const_singleton"],
)

envoy_cc_library(
name = "remote_data_fetcher_lib",
srcs = ["remote_data_fetcher.cc"],
Expand All @@ -320,6 +338,12 @@ envoy_cc_library(
],
)

envoy_cc_library(
name = "resources_lib",
hdrs = ["resources.h"],
deps = ["//source/common/singleton:const_singleton"],
)

envoy_cc_library(
name = "runtime_utility_lib",
srcs = ["runtime_utility.cc"],
Expand Down
Loading