Releases: cloudwego/volo
Volo-Thrift 0.11.2
volo-thrift-0.11.2 feat(volo-thrift): add more log filter for transport layer (#610)
Volo 0.11.1
volo-0.11.1 feat(volo-thrift): add more log filter for transport layer (#610)
Volo-Thrift 0.11.1
What's Changed
- fix(volo-cli): use r#gen rather than gen as the mod name following edition 2024 by @Ggiggle in #595
- chore: use 2024 edition and adapt to new constraints by @Ggiggle in #596
- feat(volo-grpc): add stats to track client and server by @Joshuahoky in #598
- chore(volo-http): add retry layer in test helpers & use it in unit tests by @yukiiiteru in #601
- chore(volo-http): remove unused debug print by @yukiiiteru in #603
- fix(volo-http): put stripping IPv6 brackets in front. by @yukiiiteru in #604
- chore(volo-build): move the field mask switch to right implement block by @Ggiggle in #605
- chore: use minimal supported version for necessary deps by @yukiiiteru in #606
- fix(volo-thrift): filter server remote closed log by @PureWhiteWu in #607
Full Changelog: volo-http-0.4.1...volo-thrift-0.11.1
Volo-HTTP 0.4.1
What's Changed
Bug Fixes
In previous implementation, HTTP client cannot resolve IPv6 literal address in URI like http://[::1]:8080/
, and it will throw BadHostName
without any context.
This version fixes this issue and adds context for errors like BadScheme
and BadHostName
, which will now print the error message along with its content, it should make troubleshooting easier.
Detailed Commits
- fix(volo-http): fix error on ipv6 literal address resolving by @yukiiiteru in #597
Full Changelog: volo-http-0.4.0...volo-http-0.4.1
Volo-HTTP 0.4.0
What's Changed
Since Volo-HTTP 0.3.0
Features
Simplify Client
In the previous implementation, for the sake of performance, we used a lot of generics in the Client
and minimized the use of Box
. However, we found that this would make the Client
too complicated and the Client
-related errors difficult to understand.
To avoid the Client
type being too complicated, we used Box
in the outermost layer to wrap the inner dyn Future
, which would not have a high performance overhead while ensuring that the type is simple and easy to use.
In 0.3.0, we may build a client typed DefaultClient
with complicated generic types (and all of them are complicated type aliases), and in 0.4.0, we can use Client
directly.
Support HTTP/2
We support HTTP/2 for both server and client, and connection pool for client is also supported.
Other Changes
Remove default Target
of Client
Considering that default Target
of Client
is used less frequently, but it makes Target
selection logic of Client
too complicated, we have removed default Target
of Client
in this version.
However, we have added TargetLayer
, it can force Client
to set a Target
, which can provide a similar experience as before.
With the removal of default Target
of Client
, configuration of default Host
is also removed. Here we adjust the original Host
Layer to be more flexible, which can be set to None
, Auto
, Force
, Fallback
modes.
The default callee name has been removed in favor of the with_callee_name
method of TargetLayer
. This is only necessary when accessing an HTTPS address via an IP address and needing to set up SNI.
Additionally, RequestBuilder::full_uri
has been removed. We recommend using a Layer
to implement this functionality rather than in RequestBuilder
, and an example will be pushed later.
Others
- Rename
DefaultLB
andDefaultLBService
toDefaultLb
andDefaultLbService
- Remove deprecated
ClientRequest
,ServerRequest
,ClientResponse
,ServerResponse
- Reduce some generic constraints
- Fix infinite loop printing warn log when discover's watch channel is closed
- Add
HttpProxyLayer
for supporting RFC7230 defined HTTP proxy - Support
SpanProvider
for HTTP server
Bug Fix
- Use
DiscoverKey
instead of(FastStr, u16)
asDiscover::Key
to avoid discovering unexpected cache of domain name with port
Break Changes
Simplify Client
- The complex type aliases have been removed, including:
ClientMetaService
ClientService
SimpleClient
DefaultClientOuterService
DefaultClient
- Generic types of
Client
has been changed from inner service (S
) to request body and response body (ReqBody
andRespBody
).- In most cases, users can use
Client
directly and ignore the generic types.
- In most cases, users can use
Support HTTP/2
- Since HTTP/2 is supported in this version, we add new features
"http1"
and"http2"
- Default features is updated to
["default-client", "default-server"]
Additionally, the "default-client"
and "default-server"
use HTTP/1 only
Remove default Target
of Client
- Default target related functions of
ClientBuilder
are removed:ClientBuilder::address
ClientBuilder::host
ClientBuilder::with_port
ClientBuilder::with_scheme
ClientBuilder::target_ref
ClientBuilder::target_mut
Host
layer is refactored, andClientBuilder::default_host
is updated toClientBuilder::host_mode
RequestBuilder::full_uri
is removed
Detailed Commits
- chore(volo-http): format codes of client ip by @yukiiiteru in #539
- chore(volo-http): put client_ip to cx.ext by @yukiiiteru in #541
- fix(examples): fixed http-tls examples by @eternaphia in #564
- fix(volo-http): fix
clippy::result_large_err
by @yukiiiteru in #568 - chore(volo-http): Wrap client service by
Box
by @yukiiiteru in #572 - feat(volo-http): support http/2 for server by @yukiiiteru in #573
- feat(volo-http): support http2 and connection pool for client by @yukiiiteru in #574
- chore(volo-http): fix clippy warning
mismatched_lifetime_syntaxes
by @yukiiiteru in #576 - chore(volo-http): refactor target logics of http client by @yukiiiteru in #580
- chore(volo-http): improve user experience by @yukiiiteru in #587
- chore(volo-http): adjust some codes by @yukiiiteru in #590
- chore(volo-http): bump volo-http to 0.4.0 by @yukiiiteru in #592
New Contributors
- @eternaphia made their first contribution in #564
Full Changelog: volo-http-0.3.0...volo-http-0.4.0
Volo-HTTP 0.4.0-rc.5
What's Changed
- The behavior of using the default version of the HTTP protocol is not appropriate, because all HTTP servers support HTTP/1.1, but not all HTTP servers support HTTP/2, so it is not appropriate to select HTTP/2 by default when both versions are supported. So in this PR, we use HTTP/1.1 by default when
"http1"
is enabled - There's no HTTP proxy implementation in Volo-HTTP, and when running unit tests using nodes in mainland China, the test fails due to abnormal access to
httpbin.org
. So we addHttpProxyLayer
in Volo-HTTP, it supports HTTP proxy defined in rfc7230 and it can read address from environment variable (http_proxy
andHTTP_PROXY
) or be set manually. - There are some inappropriate aspects of the previous DNS Resolver implementation, we adjust it in Volo-HTTP and Volo-gRPC which is copied from Volo-HTTP with some modifies.
- For better observability, we add
SpanProvider
for Volo-HTTP, it can enter a user defined span when serving a request.
Pull Request: chore(volo-http): adjust some codes by @yukiiiteru in #590
Full Changelog: volo-http-0.4.0-rc.4...volo-http-0.4.0-rc.5
Volo-HTTP 0.4.0-rc.4
What's Changed
- Throw a
compile_error
if nither feature"http1"
nor"http2"
is disabled - Use only
"http1"
indefault-client
anddefault-server
- Set
default-client
anddefault-server
as default features - Re-export
ClientTransport
service for users to import into their inner layers. - Use
DiscoverKey
instead of(FastStr, u16)
asDiscover::Key
- Rename
DefaultLB
andDefaultLBService
toDefaultLb
andDefaultLbService
- Remove deprecated
ClientRequest
,ServerRequest
,ClientResponse
,ServerResponse
- Reduce some generic constraints
- Fix infinite loop printing warn log when discover's watch channel is closed
Detailed commits
- fix: Infinite loop printing warn log when discover's watch channel is closed. by @intfish123 in #585
- chore(volo-http): improve user experience by @yukiiiteru in #587
Full Changelog: volo-http-0.4.0-rc.3...volo-http-0.4.0-rc.4
Volo-HTTP 0.4.0-rc.3
What's Changed
Considering that default Target
of Client
is used less frequently, but it makes Target
selection logic of Client
too complicated, we have removed default Target
of Client
in this version.
However, we have added TargetLayer
, it can force Client
to set a Target
, which can provide a similar experience as before.
With the removal of default Target
of Client
, configuration of default Host
is also removed. Here we adjust the original Host
Layer to be more flexible, which can be set to None
, Auto
, Force
, Fallback
modes.
The default callee name has been removed in favor of the with_callee_name
method of TargetLayer
. This is only necessary when accessing an HTTPS address via an IP address and needing to set up SNI.
Additionally, RequestBuilder::full_uri
has been removed. We recommend using a Layer
to implement this functionality rather than in RequestBuilder
, and an example will be pushed later.
Break Changes
- Remove default target related functions of
ClientBuilder
:ClientBuilder::address
ClientBuilder::host
ClientBuilder::with_port
ClientBuilder::with_scheme
ClientBuilder::target_ref
ClientBuilder::target_mut
- Refactor
Host
layer, andClientBuilder::default_host
is updated toClientBuilder::host_mode
- Remove
RequestBuilder::full_uri
Related Commits
- chore(volo-http): fix clippy warning
mismatched_lifetime_syntaxes
by @yukiiiteru in #576 - chore(volo-http): refactor target logics of http client by @yukiiiteru in #580
Full Changelog: volo-http-0.4.0-rc.2...volo-http-0.4.0-rc.3
Volo 0.10.7
What's Changed
In this version, Volo adds support for ALPN of TLS through:
- feat(volo-http): support http/2 for server by @yukiiiteru in #573
Volo-HTTP 0.4.0-rc.2
What's Changed
Volo-HTTP supports HTTP/2 for both server and client, and connection pool for client is also supported.
Detailed commits
- feat(volo-http): support http/2 for server by @yukiiiteru in #573
- feat(volo-http): support http2 and connection pool for client by @yukiiiteru in #574
Full Changelog: volo-http-0.4.0-rc.1...volo-http-0.4.0-rc.2