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

http-box: Box HTTP payloads via middleware #430

Merged
merged 5 commits into from
Feb 19, 2020
Merged

http-box: Box HTTP payloads via middleware #430

merged 5 commits into from
Feb 19, 2020

Conversation

olix0r
Copy link
Member

@olix0r olix0r commented Feb 18, 2020

The previous http::BoxedService implementation (1) boxed the inner
service, (2) boxed the service's errors, and (3) boxed the service's
HTTP response payload type. However, sometimes it is necessary to box
HTTP request payload types; and other times it may not be
necessary/desirable to box the service type when boxing a response
payload.

This change extracts a new http-box crate with HTTP-payload-boxing
middlewares, and the prior general BoxService is moved to a dedicated
box crate.

The previous `http::BoxedService` implementation (1) boxed the inner
service, (2) boxed the service's errors, and (3) boxed the service's
HTTP response payload type. However, sometimes it is necessary to box
HTTP _request_ payload types; and other times it may not be
necessary/desirable to box the service type when boxing a response
payload.

This change extracts a new `http-box` crate with HTTP-payload-boxing
middlewares, and the prior general BoxService is moved to a dedicated
`box` crate.
@olix0r olix0r requested a review from a team February 18, 2020 20:09
@olix0r olix0r requested a review from a team February 19, 2020 18:36
Copy link
Contributor

@kleimkuhler kleimkuhler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@olix0r olix0r merged commit d6d94d5 into master Feb 19, 2020
@olix0r olix0r deleted the ver/box-layers branch February 19, 2020 20:59
olix0r added a commit to linkerd/linkerd2 that referenced this pull request Feb 19, 2020
This release includes the results from continued profiling & performance
analysis. In addition to modifying internals to prevent unwarranted
memory growth, we've introduced new metrics to aid in debugging and
diagnostics: a new `request_errors_total` metric exposes the number of
requests that receive synthesized responses due to proxy errors; and a
suite of `stack_*` metrics expose proxy internals that can help us
identify unexpected behavior.

---

* trace: update `tracing-subscriber` dependency to 0.2.1 (linkerd/linkerd2-proxy#426)
* Reimplement the Lock middleware with tokio::sync (linkerd/linkerd2-proxy#427)
* Add the request_errors_total metric (linkerd/linkerd2-proxy#417)
* Expose the number of service instances in the proxy (linkerd/linkerd2-proxy#428)
* concurrency-limit: Share a limit across Services (linkerd/linkerd2-proxy#429)
* profiling: add benchmark and profiling scripts (linkerd/linkerd2-proxy#406)
* http-box: Box HTTP payloads via middleware (linkerd/linkerd2-proxy#430)
* lock: Generalize to protect a guarded value (linkerd/linkerd2-proxy#431)
olix0r added a commit to linkerd/linkerd2 that referenced this pull request Feb 19, 2020
This release includes the results from continued profiling & performance
analysis. In addition to modifying internals to prevent unwarranted
memory growth, we've introduced new metrics to aid in debugging and
diagnostics: a new `request_errors_total` metric exposes the number of
requests that receive synthesized responses due to proxy errors; and a
suite of `stack_*` metrics expose proxy internals that can help us
identify unexpected behavior.

---

* trace: update `tracing-subscriber` dependency to 0.2.1 (linkerd/linkerd2-proxy#426)
* Reimplement the Lock middleware with tokio::sync (linkerd/linkerd2-proxy#427)
* Add the request_errors_total metric (linkerd/linkerd2-proxy#417)
* Expose the number of service instances in the proxy (linkerd/linkerd2-proxy#428)
* concurrency-limit: Share a limit across Services (linkerd/linkerd2-proxy#429)
* profiling: add benchmark and profiling scripts (linkerd/linkerd2-proxy#406)
* http-box: Box HTTP payloads via middleware (linkerd/linkerd2-proxy#430)
* lock: Generalize to protect a guarded value (linkerd/linkerd2-proxy#431)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants