From 6f954c3823ae3b0bf22eaf0bbbd694d33d82e735 Mon Sep 17 00:00:00 2001 From: Oliver Gould Date: Thu, 21 Jan 2021 06:52:38 -0800 Subject: [PATCH] proxy: v2.129.0 (#5581) This release improves diagnostics about the proxy's failfast state: * Warnings are now emitted when the failfast state is entered; * The "max concurrency exhausted" gRPC message has been changed to more-clearly indicate a failfast state error; and * Failfast recovery has been made more robust, ensuring that a service can recover indepenently of new requests being received. Furthermore, metric labeling has been improved: * TCP server metrics are now annotated with the original `target_addr`; * The `tls` label is now set to true for inbound TLS connections that lack a client ID. This is mostly helpful to clarify inbound metrics on the `identity` controller; * Outbound `tls` metrics could be reported incorrectly when a proxy was configured to not use identity. This has been corrected. Finally, socket-level errors now include a _client_ or _server_ prefix to indicate which side of the proxy encountered the error. --- * stack: remove `map_response` (linkerd/linkerd2-proxy#835) * replace `RequestFilter` with Tower's upstream impl (linkerd/linkerd2-proxy#842) * tracing: fix incorrect field format when logging in JSON (linkerd/linkerd2-proxy#845) * replace `FutureService` with Tower's upstream impl (linkerd/linkerd2-proxy#839) * integration: improve tracing in tests (linkerd/linkerd2-proxy#846) * service-profiles: Prevent Duration coercion panics (linkerd/linkerd2-proxy#844) * inbound: Separate HTTP server logic from protocol detection (linkerd/linkerd2-proxy#843) * Correct gRPC 'max-concurrency exhausted' error messages (linkerd/linkerd2-proxy#847) * Update tonic to v0.4 (linkerd/linkerd2-proxy#849) * failfast: Improve diagnostic logging (linkerd/linkerd2-proxy#848) * Update the base docker image (linkerd/linkerd2-proxy#850) * stack: Implement Clone for ResultService (linkerd/linkerd2-proxy#851) * Ensure services in failfast can become ready (linkerd/linkerd2-proxy#858) * tests: replace string matching on metrics with parsing (linkerd/linkerd2-proxy#859) * Decouple tls::accept from TcpStream (linkerd/linkerd2-proxy#853) * metrics: Handle NoPeerIdFromRemote properly (linkerd/linkerd2-proxy#857) * metrics: Reorder metrics labels (linkerd/linkerd2-proxy#856) * Rename tls::accept to tls::server (linkerd/linkerd2-proxy#854) * Annotate socket-level errors with a scope (linkerd/linkerd2-proxy#852) * test: reduce repetition in metrics tests (linkerd/linkerd2-proxy#860) * tls: Disambiguate client and server identities (linkerd/linkerd2-proxy#855) * Update to tower v0.4.4 (linkerd/linkerd2-proxy#864) * Update cargo dependencies (linkerd/linkerd2-proxy#865) * metrics: add `target_addr` label for accepted transport metrics (linkerd/linkerd2-proxy#861) * outbound: Strip endpoint identity when disabled (linkerd/linkerd2-proxy#862) --- The opaque-ports test has been updated to reflect proxy metrics changes. --- .proxy-version | 2 +- test/integration/opaqueports/opaque_ports_test.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.proxy-version b/.proxy-version index 2d54b0604..64c5512ba 100644 --- a/.proxy-version +++ b/.proxy-version @@ -1 +1 @@ -v2.128.0 +v2.129.0 diff --git a/test/integration/opaqueports/opaque_ports_test.go b/test/integration/opaqueports/opaque_ports_test.go index 385be30b3..28b1afcc5 100644 --- a/test/integration/opaqueports/opaque_ports_test.go +++ b/test/integration/opaqueports/opaque_ports_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" "os" - "strings" + "regexp" "testing" "time" @@ -17,9 +17,9 @@ var TestHelper *testutil.TestHelper var ( appName = "app" - // With the app's port marked as opaque, we expect to find a single open - // TCP connection that is not TLS'd because the port is skipped. - tcpMetric = "tcp_open_connections{peer=\"src\",direction=\"inbound\",tls=\"true\",client_id=\"default.linkerd-opaque-ports-test.serviceaccount.identity.linkerd.cluster.local\"}" + tcpMetricRE = regexp.MustCompile( + `^tcp_open_total\{direction="inbound",peer="src",target_addr=".*:4143",tls="true",client_id="default\.linkerd-opaque-ports-test\.serviceaccount\.identity\.linkerd\.cluster\.local"\}$`, + ) ) func TestMain(m *testing.M) { @@ -78,7 +78,7 @@ func TestOpaquePorts(t *testing.T) { if err != nil { testutil.AnnotatedFatalf(t, "error getting metrics for pod", "error getting metrics for pod\n%s", err) } - if !strings.Contains(metrics, tcpMetric) { + if tcpMetricRE.MatchString(metrics) { testutil.AnnotatedFatalf(t, "failed to find expected TCP metric when port is marked as opaque", "failed to find expected TCP metric when port is marked as opaque\n%s", metrics) } })