-
Notifications
You must be signed in to change notification settings - Fork 280
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
2020 tower spring cleaning #431
Comments
We should probably also add the |
I've updated the |
We now have tons of fancy new labels. |
@jonhoo A few notes on
|
I did triage! |
@davidbarsky Can you say more about what you mean by "explicit semaphore". Are you thinking about #412, or something else? Also, I'm not sure I follow why |
Also, I wonder if we should keep the discussion of |
This sounds a lot like the
What do you mean by "explicit semaphore"? If you're proposing adding a semaphore-based concurrency control mechanism to every service, I'm not sure how I feel about that. Many services (including most middleware services) don't require their own concurrency control, just propagating backpressure from lower-level services up the stack. Am I understanding what you mean correctly? |
@jonhoo Yeah, some sort of dedicated issue for
Ah, good to know. I'll take a look at that those two issues.
By "explicit semaphore", I was referring to the proposal outlined in #412. Backpressure would be propagated by passing a token up through the Service stack rather than relying on each |
(@davidbarsky see also rust-lang/futures-rs#2109, which is my primary consideration for |
Fixed the docs feature annotations and |
This addresses at least three pain points: - we were affected by bugs that were already fixed in git, but not in the released crate; - we can use service combinators to transform requests and responses; - we can use the hedge middleware. The version in git is still marked as 0.3.1 but these changes will be part of tower 0.4: tower-rs/tower#431
This addresses at least three pain points: - we were affected by bugs that were already fixed in git, but not in the released crate; - we can use service combinators to transform requests and responses; - we can use the hedge middleware. The version in git is still marked as 0.3.1 but these changes will be part of tower 0.4: tower-rs/tower#431
This addresses at least three pain points: - we were affected by bugs that were already fixed in git, but not in the released crate; - we can use service combinators to transform requests and responses; - we can use the hedge middleware. The version in git is still marked as 0.3.1 but these changes will be part of tower 0.4: tower-rs/tower#431
Now that 0.4 has been shipped, I think we can call this "done"! |
It's about time we made a serious push to make
tower
"ready for public use". Here is a list of what should happen to make that a reality:tower-service
) into a singletower
crate like tokio did. We should add features that enable and disable different middleware, with all features being off by default.From
orInto
(see Migrate crates to useError: From<S::Error>
#387). We should also think about Add section about not including sources in Display impl rust-lang/api-guidelines#210, and whether we want to stop printing the source when we print our errors.poll_ready
(see Disarming Service after successful poll_ready #408, Make poll_ready() return a token which call() consumes #412, and Undoing a Sink::poll_ready rust-lang/futures-rs#2109).cargo-deny
).#![deny(missing_docs)]
) and basic usage examples + module docs. We should also tidy up theREADME
+ crate docs + metadata while we're at it. See also Document the library #33.doc_cfg
when running on docs.rs (see docs: annotate io mod with doc_cfg tokio-rs/tokio#1808), and enable all features on docs.rs (like docs: add docs.rs metadata to build with all features tokio-rs/tokio#1471)publish = false
. We could make them non-pub
, though that would make the tests stop working...tower::balance::p2c::layer()
ortower::balance::p2c()
as a shorthand fortower::balance::p2c::MakeBalanceLayer::new()
.Target
should be renamed to a more understandable name. PerhapsEndpoint
?For the per-crate/module docs cleanup, here are the things we need to do, what we have done, and who's going to do each one. If you want to make a pass over one of these, please post here to claim so we don't duplicate the work. As you make your pass, please also create issues for implementation and API issues you spot (for example,
limit
should probably not vendor parts oftokio::sync
).tower-layer
tower-service
tower-test
(@jonhoo)tower
itselftower/balance
(Spring cleaning for tower::balance #449)tower/buffer
(Tidy up tower::buffer #444)tower/builder
tower/discover
(Change Discover to be a sealed trait #443)tower/filter
tower/hedge
tower/limit
tower/load
(Tidy up tower::load #445)tower/load_shed
tower/make
tower/ready_cache
tower/reconnect
tower/retry
tower/spawn_ready
tower/steer
tower/timeout
tower/util
Things we would also like to do, but are not blockers:
The text was updated successfully, but these errors were encountered: