Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
6521aa0
debug: improving symbolization further (#3728)
alyssawilk Jun 26, 2018
56a047b
thrift: filter integration tests (#3679)
zuercher Jun 26, 2018
0f631e1
test-utillity: Remove test-utility wrapper for Buffer::toString(). (#…
jmarantz Jun 27, 2018
6460533
admin: add json serialized proto for /clusters (#3478)
mrice32 Jun 27, 2018
9025369
thrift: fix bad merge related to TestUtility::bufferToString (#3742)
zuercher Jun 27, 2018
5244597
authz_filter: extended ext_authz to support v2alpha api (#3162)
Jun 27, 2018
9e7a3ab
rbac: add metadata support to rbac filter (#3638)
yangminzhu Jun 27, 2018
4e0b252
change log level to debug (#3738)
ramaraochavali Jun 27, 2018
4f344cf
Skeleton for HdsCluster
markatou Jun 27, 2018
e050f5e
include vector (#3746)
danielhochman Jun 28, 2018
299591b
Tell tar to follow symlinks. (#3745)
tschroed Jun 28, 2018
9c27339
support for hystrix dashboard through an admin endpoint, using sink (…
trabetti Jun 28, 2018
18cdf0f
ci: updating EXPECTED_CXX_VERSION (#3751)
alyssawilk Jun 28, 2018
ab86abc
config: health checker timeout and interval should be greater than 0 …
dio Jun 28, 2018
4865c9c
rbac: add some debug logging. (#3744)
yangminzhu Jun 28, 2018
6d58cb8
move hystrix entry to keep the section alphabetically sorted (#3752)
trabetti Jun 28, 2018
93d96b5
Remove deprecated SAN. (#3727)
shakti-das Jun 28, 2018
4b871c0
Fixes #3756 by creating a new api_proto_library_internal build rule t…
mju Jun 29, 2018
f69baf8
change unofficial Chinese doc with ServiceMesher (#3767)
rootsongjc Jun 30, 2018
52de772
http: changing mutate[request|response] to special case all upgrade h…
alyssawilk Jul 2, 2018
b686053
test: fixing most tests for v2-config-only true (#3743)
alyssawilk Jul 2, 2018
e341004
Incremental XDS proposal. (#3470)
Jul 2, 2018
9365720
access log: add response flag filter (#3536)
junr03 Jul 2, 2018
31abe6e
test: use type-specific constructor when creating empty PortMap. (#3777)
PiotrSikora Jul 3, 2018
090676d
util: ignore unknown fields in parsing jsons (#3778)
kyessenov Jul 3, 2018
2805b46
thrift: split transport/protocol code into interface and implementati…
zuercher Jul 3, 2018
c563b39
test: tweaks to uds_integration_test (--runs_per_test) (#3784)
alyssawilk Jul 3, 2018
2c3c3e7
lua: add requestInfo():protocol() API (#3760)
dio Jul 3, 2018
07b13c0
config: backoff strategy implementation (#3758)
ramaraochavali Jul 4, 2018
3b05bff
Add requestedServerName() to Network::connection (#3782)
vadimeisenbergibm Jul 4, 2018
a5da078
health check: structured active healthcheck logging (#3176)
Jul 5, 2018
fe94528
lua: add connection():ssl() API (#3761)
dio Jul 6, 2018
b79d5e1
rbac: not permission/principal matcher (#3801)
rodaine Jul 6, 2018
0f01a2a
authz_bugfix: headers need to be copied (#3759)
Jul 7, 2018
75909a7
lc trie: templated LcTrie<T>. (#3780)
PiotrSikora Jul 7, 2018
7253d5f
config: flipping v2-config-only to disable v1 support by default (#3807)
alyssawilk Jul 9, 2018
37ad8fc
http: strip additional invalid h/2 response headers (#3797)
snowp Jul 9, 2018
8875eba
http: better handling of HEAD requests (#3775)
alyssawilk Jul 9, 2018
866597f
format: run clang-format on protos again (#3811)
mattklein123 Jul 9, 2018
4b4fd6a
Basic HdsCluster, and healthchecker initialization
markatou Jul 9, 2018
24dfa19
ssl: introduce `serialNumberPeerCertificate()` (#3779)
talnordan Jul 9, 2018
fd57604
thrift: transport and protocol write code (#3789)
zuercher Jul 9, 2018
74928c7
api: remove support for cluster_names field in ApiConfigSource protos…
ambuc Jul 9, 2018
5e1eb02
router: Remove the HeaderMatcher value and regex fields. (#3796)
kavyako Jul 9, 2018
cd95109
Add new issue label "no stalebot" to be ignored by stalebot. (#3821)
ggreenway Jul 9, 2018
2a45375
Auto-merge the version-history file. (#3820)
ggreenway Jul 9, 2018
00bb039
cors: allow using regexes to match origins (#3769)
codesuki Jul 10, 2018
2705764
network: fixing a bug in detecting closed connections (#3813)
alyssawilk Jul 10, 2018
80be024
authz_fix: keep the previous behaviour of adding encoding header (#3805)
Jul 10, 2018
c3d2f37
common/tcp: generic TCP connection pool for extensions (#3747)
zuercher Jul 10, 2018
b9db466
thrift: replace numeric limit macros with std::numeric_limits (#3822)
zuercher Jul 10, 2018
9333f23
Revert "stats: envoy prometheus endpoint fails promlint due to format…
JonathanO Jul 10, 2018
03cfb87
healthchecks: Add interval_jitter_percent healthcheck option (#3816)
julia-stripe Jul 10, 2018
eab54b5
Add hard-coded /hot_restart_version test (#3832)
ambuc Jul 10, 2018
55e7456
Update ApiConfigSource docs with grpc_services only for GRPC configs …
ambuc Jul 10, 2018
1c39216
Endpoint reposnds to healthcheck request
markatou Jul 10, 2018
ce83509
test: deflaking a test, improving debugability (#3829)
alyssawilk Jul 10, 2018
810ec2e
Support mutable metadata for endpoints (#3814)
rgs1 Jul 10, 2018
df7a291
format: run buildifier on .bzl files. (#3824)
PiotrSikora Jul 11, 2018
c46a946
Server -> Envoy -> Single Endpoint healthcheck
markatou Jul 11, 2018
a49f8b7
Naming changes
markatou Jul 11, 2018
b1f870a
common: jittered backoff implementation (#3791)
ramaraochavali Jul 11, 2018
f22d552
test: add test for consistency of RawStatData internal memory represe…
ambuc Jul 11, 2018
6881200
logging: Requiring details for RELEASE_ASSERT (#3842)
alyssawilk Jul 11, 2018
2ba32f2
fix master build (#3844)
lizan Jul 11, 2018
6a57863
common: minor doc updates (#3845)
ramaraochavali Jul 12, 2018
e0977b1
Removing EDS dependency from hds test
markatou Jul 12, 2018
95c3e13
http: new style WebSockets, where headers and data are processed by t…
alyssawilk Jul 12, 2018
336bce9
test: deflaking header_integration_test (#3849)
alyssawilk Jul 12, 2018
9de80f7
upstream: introduce PriorityStateManager, refactor EDS (#3783)
dio Jul 12, 2018
37f66d2
lc trie: add exclusive flag. (#3825)
PiotrSikora Jul 12, 2018
c2e3ada
config: making v2-config-only a boolean flag (#3847)
alyssawilk Jul 12, 2018
119c4c8
Addressing comments
markatou Jul 12, 2018
218d112
proxy_protocol: add support for HAProxy Proxy Protocol v2 (binary) (#…
donbowman Jul 12, 2018
e718500
Ensure subsets are updated when metadata changes (#3840)
rgs1 Jul 12, 2018
a182041
test: fixing yet more flakes (#3850)
alyssawilk Jul 12, 2018
0a0914e
upstream: allow subset_lb to be configured to respect locality weight…
snowp Jul 13, 2018
0cf947f
grpc-json: handle google.api.HttpBody when building HTTP response (#3…
dio Jul 13, 2018
230228b
api: added csharp namespace override to cluster and listener packages…
skwasiborski Jul 13, 2018
c92a301
Refactor Stats::RawStatData into a StatsOptions struct (#3629)
ambuc Jul 13, 2018
14af459
Addressing comments, adding a response message
markatou Jul 13, 2018
01d2e16
listener: filter chain selection based on destination IP/port. (#3851)
PiotrSikora Jul 13, 2018
7caa887
fuzz: server config validation fuzz test. (#3770)
anirudhmurali Jul 15, 2018
9a685a0
jwt_authn: fix comments (#3862)
talnordan Jul 16, 2018
e435d18
cors: set access-control-expose-headers on actual CORS request (#3852)
stanley-cheung Jul 16, 2018
45fe83e
http: per-stream idle timeout. (#3841)
htuch Jul 16, 2018
606a22a
Process more messages and reply to server every interval
markatou Jul 16, 2018
cf12ea5
upstream: fix PriorityStateManager indexing (#3856)
akonradi Jul 16, 2018
05647d6
Added capability to the hdsdelegate's message and cleaned up code a bit
markatou Jul 16, 2018
5f8b25e
test: deflaking ratelimit_integration_test (#3866)
alyssawilk Jul 16, 2018
b3c5fe6
Minor changes
markatou Jul 16, 2018
d69dd92
Added a todo
markatou Jul 16, 2018
445f365
Use shared_ptr for SSL context objects (#3754)
qiwzhang Jul 16, 2018
27be177
lua filter: fix memory leak due to circular runtime reference (#3855)
mattklein123 Jul 16, 2018
1645fa5
websocket: deprecating old style websocket (#3867)
alyssawilk Jul 17, 2018
a0b22ef
http/2: fix spurious limit of 100 concurrent streams. (#3658)
PiotrSikora Jul 17, 2018
4aad3f8
Addressing some comments
markatou Jul 17, 2018
03d02e5
Fixing format
markatou Jul 17, 2018
c99fff2
No magic numbers
markatou Jul 17, 2018
8fa8401
build: document missing dependency when building nghttp2 from sources…
PiotrSikora Jul 18, 2018
1940195
add python protobuf package (#3859)
nzoschke Jul 18, 2018
2a68458
coverage: rename NOT_REACHED/NOT_IMPLEMENTED to exclude them from cod…
zuercher Jul 18, 2018
17efc83
Avoid extra `predicate()` calls (#3869)
rgs1 Jul 18, 2018
8e7b0b5
Addressed comments
markatou Jul 18, 2018
a7cf6df
Add string conversion necessary for google import. (#3885)
mrice32 Jul 18, 2018
f9ce8f7
Addressing comments and an attempt at a unit test
markatou Jul 18, 2018
27c99de
load_stats: fix race condition. (#3868)
htuch Jul 18, 2018
1aa2430
lc trie: fix memory leak. (#3890)
PiotrSikora Jul 18, 2018
a0b6243
Move well known names from ALL_CAPS to CamelCase. (#3893)
mrice32 Jul 18, 2018
3a56d21
coverage: remove deprecated NOT_IMPLEMENTED (#3889)
zuercher Jul 19, 2018
0e71582
add resource monitor framework (#3848)
eziskind Jul 19, 2018
0f68948
authz: fix RBAC filter config PB docs (#3895)
talnordan Jul 19, 2018
a8fa0c6
http/2: use hpack_table_size to control both encoder and decoder. (#3…
PiotrSikora Jul 19, 2018
b14ce1d
syscall: latch errno deeper in the buffer implementation (#3880)
venilnoronha Jul 19, 2018
982ebd2
load_stats: fix for Google import. (#3900)
htuch Jul 19, 2018
b202f89
Remove the deprecated redis_health_check field (#3896)
dio Jul 19, 2018
8ed7c15
api: ensure HeaderValue keys are non-empty. (#3901)
htuch Jul 19, 2018
20296c5
http: ensure the per-stream idle timer is disabled at stream end. (#3…
htuch Jul 20, 2018
b8e019f
Update gauges when a subset LB is destroyed (#3917)
rgs1 Jul 20, 2018
598f5c9
listener: fix ipv6 error (#3912)
ramaraochavali Jul 20, 2018
3cc6e3c
fuzz: fuzzer for HeaderMapImpl. (#3921)
htuch Jul 22, 2018
a5d9885
util: Add test for checking the format of proto files. (#3923)
jmarantz Jul 23, 2018
783fda9
http1: fix crash when upstream sends extra CR/LF between responses (#…
mattklein123 Jul 23, 2018
569d70a
test: fixing a downstream tsan failure (#3926)
alyssawilk Jul 23, 2018
a5478ee
alts: add gRPC TSI frame protector (#3873)
lizan Jul 23, 2018
391150a
coverage: coverage runs for a single test target. (#3922)
htuch Jul 23, 2018
672083c
http: global connection manager per-stream idle timeouts. (#3879)
htuch Jul 23, 2018
3a5d126
lua: add requestInfo():dynamicMetadata() API (#3800)
dio Jul 23, 2018
c4b6aec
jwt_authn docs: fix Protobuf YAML examples (#3924)
talnordan Jul 23, 2018
e021e4d
Add integration tests for static secrets (#3910)
qiwzhang Jul 23, 2018
2d7b9df
Added a unit test, and the class HdsInfoFactory to help with testing
markatou Jul 23, 2018
7c11e92
tcp/conn_pool: improve interface for callers (#3903)
zuercher Jul 23, 2018
445e746
docs: adding flaky test instructions (#3931)
alyssawilk Jul 23, 2018
0a43ae8
Update network utility getoriginaldst for IPv6 (#3933)
cmluciano Jul 24, 2018
eefd06d
Add new field to access log (#3907)
rgs1 Jul 24, 2018
054513e
Addressing comments
markatou Jul 24, 2018
8b3aae8
health_check: remove deprecated endpoint field (#3891)
mrice32 Jul 24, 2018
b32eabf
upstream: implement Cluster's load_assignment field (#3864)
dio Jul 24, 2018
e89c9d6
build: Initial bazel build file changes for Windows (#3884)
sesmith177 Jul 24, 2018
b9fc350
Moving ClusterInfoFactory to a more usual location
markatou Jul 24, 2018
a03c343
Fix envoy-filter-example build (#3947)
sesmith177 Jul 24, 2018
1f445bd
build: external deps build on Windows (#3892)
sesmith177 Jul 24, 2018
0621763
listener: deprecate sni_domains. (#3948)
PiotrSikora Jul 25, 2018
1ef23d4
tls: update BoringSSL to 372daf70 (3440). (#3946)
PiotrSikora Jul 25, 2018
ec0179a
router: add response/request header options at route level (#3838)
derekargueta Jul 25, 2018
8459237
fuzz: fixes oss-fuzz: 8363 (#3905)
anirudhmurali Jul 25, 2018
f3b1100
websocket: fixing websocket to consistently not send connection: clos…
alyssawilk Jul 25, 2018
c27ed1f
Addressing comments
markatou Jul 25, 2018
3ee3aa3
Add support for drop category policy and reporting (#3894)
vishalpowar Jul 25, 2018
9b64f4b
build: BUILD file changes necessary for #3892 (#3909)
sesmith177 Jul 26, 2018
5beff99
Fix run_envoy_docker.sh 'do_ci.sh ' does not work behind proxy (#3956)
249043822 Jul 26, 2018
72a964c
thrift_proxy: simple thrift router (#3863)
zuercher Jul 26, 2018
4868061
thirdpary: explicit libdir path (#3962)
vbatts Jul 26, 2018
42109e5
health check: allow request header formatting for HTTP health check r…
dio Jul 26, 2018
0e2c795
fuzz: fixes oss-fuzz: 9204 (#3935)
anirudhmurali Jul 27, 2018
1dfde38
thrift_proxy: move protobuf to api/config hierarchy (#3963)
zuercher Jul 27, 2018
280baee
rds: split subscription out from RdsRouteConfigProviderImpl (#3960)
lizan Jul 27, 2018
bcad173
Polishing
markatou Jul 27, 2018
324e628
syscall: refactor address APIs for deeper errno latching (#3897)
venilnoronha Jul 27, 2018
8babc5e
Added a unit test for HdsDelegate::sendResponse
markatou Jul 27, 2018
f4b0a52
Added a TODO
markatou Jul 27, 2018
9d62fe8
Merge branch 'master' into hds_cluster
markatou Jul 27, 2018
b6c737f
Merge remote-tracking branch 'upstream/master' into hds_cluster
markatou Jul 27, 2018
f28dc53
Remove deprecated handling of mutating admin requests from GET. (#3975)
jmarantz Jul 28, 2018
6b65dbe
Change drop_percentage to FractionalPercent (#3974)
vishalpowar Jul 28, 2018
8b9fd9a
Refactor setSocketOption for better errno latching (#3915)
venilnoronha Jul 28, 2018
08fadcc
http: fix segfault when idle timer fires before request headers recei…
htuch Jul 28, 2018
2563fe1
Merge remote-tracking branch 'upstream/master' into hds_cluster
markatou Jul 30, 2018
01268da
Fixing merging
markatou Jul 30, 2018
6a820f7
Merge branch 'hds_cluster' of ssh://github.com/markatou/envoy into hd…
markatou Jul 30, 2018
ed131cf
docs: minor typo and grammar fixups (#3984)
nicktrav Jul 30, 2018
dc03a9a
docs: fix grammar errors (#3983)
kakengloh Jul 30, 2018
46c63e6
Addressing failing tests
markatou Jul 30, 2018
7d61b00
fuzz: fixes oss-fuzz: 9621 (#3988)
anirudhmurali Jul 30, 2018
f882e74
syscall: use Api::SysCallResult in buffer impl (#3976)
venilnoronha Jul 30, 2018
028387a
tcp_proxy: convert TCP proxy to use TCP connection pool (#3938)
zuercher Jul 30, 2018
f0ca754
Fix prometheus typo. (#3999)
moderation Jul 31, 2018
83b9e2d
Add overload manager for Envoy (#3954)
eziskind Jul 31, 2018
b27068b
listener: add socket api in os sys calls for additional tests (#3968)
ramaraochavali Jul 31, 2018
eb5ea98
fuzz: fixes oss-fuzz: 9599, 9600 (#3979)
anirudhmurali Jul 31, 2018
62441f9
Add option for merging cluster updates (#3941)
rgs1 Jul 31, 2018
2012c3e
rds: make RouteConfigProvider unique_ptr (#3967)
lizan Jul 31, 2018
b96da53
Addressing comments
markatou Jul 31, 2018
d0f10fa
HeapStatData with a distinct allocation mechanism for RawStatData (#3…
jmarantz Jul 31, 2018
6a8b843
test: Add timeouts to methods that could wait forever in test/integra…
mkbehr Jul 31, 2018
315f561
Merge remote-tracking branch 'upstream/master' into hds_cluster
markatou Aug 1, 2018
bb0a9c6
Addressing comments
markatou Aug 1, 2018
85f0ba7
Addressing comments
markatou Aug 2, 2018
2a0ab6f
Adding TODOs and removing a couple empty lines
markatou Aug 3, 2018
79f1dce
Addressing comments
markatou Aug 6, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
references:
envoy-build-image: &envoy-build-image
envoyproxy/envoy-build:7f7f5666c72e00ac7c1909b4fc9a2121d772c859
envoyproxy/envoy-build:1ef23d481a4701ad4a414d1ef98036bd2ed322e7

version: 2
jobs:
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/docs/root/intro/version_history.rst merge=union
1 change: 1 addition & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ issues:
Thank you for your contributions.
exemptLabels:
- help wanted
- no stalebot
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ SOURCE_VERSION
.cache
.vimrc
.vscode
.vs
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ maximize the chances of your PR being merged.
* We expect that once a PR is opened, it will be actively worked on until it is merged or closed.
We reserve the right to close PRs that are not making progress. This is generally defined as no
changes for 7 days. Obviously PRs that are closed due to lack of activity can be reopened later.
Closing stale PRs helps us keep on top of all of the work currently in flight.
Closing stale PRs helps us to keep on top of all of the work currently in flight.
* If a commit deprecates a feature, the commit message must mention what has been deprecated.
Additionally, [DEPRECATED.md](DEPRECATED.md) must be updated as part of the commit.
* Please consider joining the [envoy-dev](https://groups.google.com/forum/#!forum/envoy-dev)
Expand Down
13 changes: 12 additions & 1 deletion DEPRECATED.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,24 @@ A logged warning is expected for each deprecated item that is in deprecation win

## Version 1.8.0 (pending)

* Use of the legacy
* Use of the v1 API is deprecated. See envoy-announce
[email](https://groups.google.com/forum/#!topic/envoy-announce/oPnYMZw8H4U).
* Use of the legacy
[ratelimit.proto](https://github.com/envoyproxy/envoy/blob/b0a518d064c8255e0e20557a8f909b6ff457558f/source/common/ratelimit/ratelimit.proto)
is deprecated, in favor of the proto defined in
[date-plane-api](https://github.com/envoyproxy/envoy/blob/master/api/envoy/service/ratelimit/v2/rls.proto)
Prior to 1.8.0, Envoy can use either proto to send client requests to a ratelimit server with the use of the
`use_data_plane_proto` boolean flag in the [ratelimit configuration](https://github.com/envoyproxy/envoy/blob/master/api/envoy/config/ratelimit/v2/rls.proto).
However, when using the deprecated client a warning is logged.
* Use of the --v2-config-only flag.
* Use of both `use_websocket` and `websocket_config` in
[route.proto](https://github.com/envoyproxy/envoy/blob/master/api/envoy/api/v2/route/route.proto)
is deprecated. Please use the new `upgrade_configs` in the
[HttpConnectionManager](https://github.com/envoyproxy/envoy/blob/master/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto)
instead.
* Setting hosts via `hosts` field in `Cluster` is deprecated. Use `load_assignment` instead.
* Use of `response_headers_to_*` and `request_headers_to_add` are deprecated at the `RouteAction`
level. Please use the configuration options at the `Route` level.

## Version 1.7.0

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ involved and how Envoy plays a role, read the CNCF

* [Official documentation](https://www.envoyproxy.io/)
* [FAQ](https://www.envoyproxy.io/docs/envoy/latest/faq/overview)
* [Unofficial Chinese documentation](https://github.com/lixiangyun/envoyproxy_doc_ZH_CN)
* [Unofficial Chinese documentation](https://github.com/servicemesher/envoy/)
* Watch [a video overview of Envoy](https://www.youtube.com/watch?v=RVZX4CwKhGE)
([transcript](https://www.microservices.com/talks/lyfts-envoy-monolith-service-mesh-matt-klein/))
to find out more about the origin story and design philosophy of Envoy
Expand Down
2 changes: 1 addition & 1 deletion REPO_LAYOUT.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ are:
## [source/](source/)

* [common/](source/common/): Core Envoy code (not specific to extensions) that is also not
specific to a standalone server implementation. I.e., this is code that could be used if Envoy
specific to a standalone server implementation. I.e., this is the code that could be used if Envoy
were eventually embedded as a library.
* [docs/](source/docs/): Miscellaneous developer/design documentation that is not relevant for
the public user documentation.
Expand Down
6 changes: 3 additions & 3 deletions SECURITY_RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Security Release Process

Envoy is a large growing community of volunteers, users, and vendors. The Envoy community has
adopted this security disclosures and response policy to ensure we responsibly handle critical
adopted this security disclosure and response policy to ensure we responsibly handle critical
issues.

## Product Security Team (PST)
Expand Down Expand Up @@ -73,7 +73,7 @@ These steps should be completed within the 1-7 days of Disclosure.
- The Fix Lead and the Fix Team will create a
[CVSS](https://www.first.org/cvss/specification-document) using the [CVSS
Calculator](https://www.first.org/cvss/calculator/3.0). The Fix Lead makes the final call on the
calculated CVSS; it is better to move quickly than make the CVSS perfect.
calculated CVSS; it is better to move quickly than making the CVSS perfect.
- The Fix Team will notify the Fix Lead that work on the fix branch is complete once there are LGTMs
on all commits in the private repo from one or more maintainers.

Expand Down Expand Up @@ -160,7 +160,7 @@ said issue, they must agree to the same terms and only find out information on a

In the unfortunate event you share the information beyond what is allowed by this policy, you _must_
urgently inform the envoy-security@googlegroups.com mailing list of exactly what information leaked
and to whom. A retrospective will take place after the leak so we can assess how to not make the
and to whom. A retrospective will take place after the leak so we can assess how to prevent making the
same mistake in the future.

If you continue to leak information and break the policy outlined here, you will be removed from the
Expand Down
4 changes: 2 additions & 2 deletions STYLE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# C++ coding style

* The Envoy source code is formatted using clang-format. Thus all white space, etc.
* The Envoy source code is formatted using clang-format. Thus all white spaces, etc.
issues are taken care of automatically. The Travis tests will automatically check
the code format and fail. There are make targets that can both check the format
(check_format) as well as fix the code format for you (fix_format).
Expand Down Expand Up @@ -96,7 +96,7 @@ A few general notes on our error handling philosophy:
silently be ignored and should crash the process either via the C++ allocation error exception, an
explicit `RELEASE_ASSERT` following a third party library call, or an obvious crash on a subsequent
line via null pointer dereference. This rule is again based on the philosophy that the engineering
costs of properly handling these cases is not worth it. Time is better spent designing proper system
costs of properly handling these cases are not worth it. Time is better spent designing proper system
controls that shed load if resource usage becomes too high, etc.
* The "less is more" error handling philosophy described in the previous two points is primarily
based on the fact that restarts are designed to be fast, reliable and cheap.
Expand Down
3 changes: 3 additions & 0 deletions api/STYLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,6 @@ the build system to prevent circular dependency formation. Package group
`//envoy/api/v2:friends` selects consumers of the core API package (services and configs)
and is the default visibility for the core API packages. The default visibility
for services and configs should be `//docs` (proto documentation tool).

Extensions should use the regular hierarchy. For example, configuration for network filters belongs
in a package under `envoy.config.filter.network`.
49 changes: 47 additions & 2 deletions api/XDS_PROTOCOL.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ management server will provide the complete state of the LDS/CDS resources in
each response. An absent `Listener` or `Cluster` will be deleted.

For EDS/RDS, the management server does not need to supply every requested
resource and may also supply additional, unrequested resources, `resource_names`
resource and may also supply additional, unrequested resources. `resource_names`
is only a hint. Envoy will silently ignore any superfluous resources. When a
requested resource is missing in a RDS or EDS update, Envoy will retain the last
known value for this resource. The management server may be able to infer all
Expand All @@ -166,7 +166,7 @@ For EDS/RDS, Envoy may either generate a distinct stream for each resource of a
given type (e.g. if each `ConfigSource` has its own distinct upstream cluster
for a management server), or may combine together multiple resource requests for
a given resource type when they are destined for the same management server.
This is left to implementation specifics, management servers should be capable
While this is left to implementation specifics, management servers should be capable
of handling one or more `resource_names` for a given resource type in each
request. Both sequence diagrams below are valid for fetching two EDS resources
`{foo, bar}`:
Expand Down Expand Up @@ -285,6 +285,51 @@ admin:

```

### Incremental xDS

Incremental xDS is a separate xDS endpoint available for ADS, CDS and RDS that
allows:

* Incremental updates of the list of tracked resources by the xDS client.
This supports Envoy on-demand / lazily requesting additional resources. For
example, this may occur when a request corresponding to an unknown cluster
arrives.
* The xDS server can incremetally update the resources on the client.
This supports the goal of scalability of xDS resources. Rather than deliver
all 100k clusters when a single cluster is modified, the management server
only needs to deliver the single cluster that changed.

An xDS incremental session is always in the context of a gRPC bidirectional
stream. This allows the xDS server to keep track of the state of xDS clients
connected to it. There is no REST version of Incremental xDS.

In incremental xDS the nonce field is required and used to pair a
[`IncrementalDiscoveryResponse`](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/discovery.proto#discoveryrequest)
to a [`IncrementalDiscoveryRequest`](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/discovery.proto#discoveryrequest)
ACK or NACK.
Optionally, a response message level system_version_info is present for
debugging purposes only.

`IncrementalDiscoveryRequest` can be sent in 3 situations:
1. Initial message in a xDS bidirectional gRPC stream.
2. As an ACK or NACK response to a previous `IncrementalDiscoveryResponse`.
In this case the `response_nonce` is set to the nonce value in the Response.
ACK or NACK is determined by the absence or presence of `error_detail`.
3. Spontaneous `IncrementalDiscoveryRequest` from the client.
This can be done to dynamically add or remove elements from the tracked
`resource_names` set. In this case `response_nonce` must be omitted.

In this first example the client connects and receives a first update that it
ACKs. The second update fails and the client NACKs the update. Later the xDS
client spontaneously requests the "wc" resource.

![Incremental session example](diagrams/incremental.svg)

On reconnect the xDS Incremental client may tell the server of its known resources
to avoid resending them over the network.

![Incremental reconnect example](diagrams/incremental-reconnect.svg)

## REST-JSON polling subscriptions

Synchronous (long) polling via REST endpoints is also available for the xDS
Expand Down
47 changes: 27 additions & 20 deletions api/bazel/api_build_system.bzl
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
load("@com_google_protobuf//:protobuf.bzl", "py_proto_library")
load("@com_lyft_protoc_gen_validate//bazel:pgv_proto_library.bzl", "pgv_cc_proto_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library", "go_grpc_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_grpc_library", "go_proto_library")
load("@io_bazel_rules_go//go:def.bzl", "go_test")

_PY_SUFFIX="_py"
_CC_SUFFIX="_cc"
_GO_PROTO_SUFFIX="_go_proto"
_GO_GRPC_SUFFIX="_go_grpc"
_GO_IMPORTPATH_PREFIX="github.com/envoyproxy/data-plane-api/api/"
_PY_SUFFIX = "_py"
_CC_SUFFIX = "_cc"
_GO_PROTO_SUFFIX = "_go_proto"
_GO_GRPC_SUFFIX = "_go_grpc"
_GO_IMPORTPATH_PREFIX = "github.com/envoyproxy/data-plane-api/api/"

def _Suffix(d, suffix):
return d + suffix
return d + suffix

def _LibrarySuffix(library_name, suffix):
# Transform //a/b/c to //a/b/c:c in preparation for suffix operation below.
if library_name.startswith("//") and ":" not in library_name:
library_name += ":" + Label(library_name).name
return _Suffix(library_name, suffix)

# Transform //a/b/c to //a/b/c:c in preparation for suffix operation below.
if library_name.startswith("//") and ":" not in library_name:
library_name += ":" + Label(library_name).name
return _Suffix(library_name, suffix)

# TODO(htuch): has_services is currently ignored but will in future support
# gRPC stub generation.
Expand All @@ -32,6 +31,7 @@ def api_py_proto_library(name, srcs = [], deps = [], has_services = 0):
protoc = "@com_google_protobuf//:protoc",
deps = [_LibrarySuffix(d, _PY_SUFFIX) for d in deps] + [
"@com_lyft_protoc_gen_validate//validate:validate_py",
"@googleapis//:api_httpbody_protos_py",
"@googleapis//:http_api_protos_py",
"@googleapis//:rpc_status_protos_py",
"@com_github_gogo_protobuf//:gogo_proto_py",
Expand All @@ -54,7 +54,7 @@ def api_go_proto_library(name, proto, deps = []):
"@com_github_golang_protobuf//ptypes/any:go_default_library",
"@com_lyft_protoc_gen_validate//validate:go_default_library",
"@googleapis//:rpc_status_go_proto",
]
],
)

def api_go_grpc_library(name, proto, deps = []):
Expand All @@ -71,9 +71,19 @@ def api_go_grpc_library(name, proto, deps = []):
"@com_github_golang_protobuf//ptypes/any:go_default_library",
"@com_lyft_protoc_gen_validate//validate:go_default_library",
"@googleapis//:http_api_go_proto",
]
],
)

# This is api_proto_library plus some logic internal to //envoy/api.
def api_proto_library_internal(visibility = ["//visibility:private"], **kwargs):
# //envoy/docs/build.sh needs visibility in order to generate documents.
if visibility == ["//visibility:private"]:
visibility = ["//docs"]
elif visibility != ["//visibility:public"]:
visibility = visibility + ["//docs"]

api_proto_library(visibility = visibility, **kwargs)

# TODO(htuch): has_services is currently ignored but will in future support
# gRPC stub generation.
# TODO(htuch): Automatically generate go_proto_library and go_grpc_library
Expand All @@ -86,11 +96,6 @@ def api_proto_library(name, visibility = ["//visibility:private"], srcs = [], de
# it can play well with the PGV plugin and (2) other language support that
# can make use of native proto_library.

if visibility == ["//visibility:private"]:
visibility = ["//docs"]
elif visibility != ["//visibility:public"]:
visibility = visibility + ["//docs"]

native.proto_library(
name = name,
srcs = srcs,
Expand All @@ -102,13 +107,15 @@ def api_proto_library(name, visibility = ["//visibility:private"], srcs = [], de
"@com_google_protobuf//:struct_proto",
"@com_google_protobuf//:timestamp_proto",
"@com_google_protobuf//:wrappers_proto",
"@googleapis//:api_httpbody_protos_proto",
"@googleapis//:http_api_protos_proto",
"@googleapis//:rpc_status_protos_lib",
"@com_github_gogo_protobuf//:gogo_proto",
"@com_lyft_protoc_gen_validate//validate:validate_proto",
],
visibility = visibility,
)

# Under the hood, this is just an extension of the Protobuf library's
# bespoke cc_proto_library. It doesn't consume proto_library as a proto
# provider. Hopefully one day we can move to a model where this target and
Expand All @@ -126,7 +133,7 @@ def api_proto_library(name, visibility = ["//visibility:private"], srcs = [], de
visibility = ["//visibility:public"],
)
if (require_py == 1):
api_py_proto_library(name, srcs, deps, has_services)
api_py_proto_library(name, srcs, deps, has_services)

def api_cc_test(name, srcs, proto_deps):
native.cc_test(
Expand Down
Loading