1.22.0 - 2021-08-13
- Add
SkipHandlerMethods
option as an allow-list of metohds that are handled by the override handler.
- Allow method registration if handler implements Register.
- Internal changes related to relaying.
1.21.2 - 2021-05-19
- Internal changes related to relaying.
1.21.1 - 2021-03-17
- Change log level for connection create/close from info level to debug level to reduce noisy logs.
1.21.0 - 2020-12-13
- Internal changes related to relaying.
1.20.1 - 2020-09-24
- Set ConnContext in the channel instead of the connection to avoid serialization errors since ConnectionOptions is sometimes embedded in configurations (#806)
1.20.0 - 2020-09-23
- Support per-connection base context propagation for inbound/outbound connections (#801)
- Internal API changes related to relaying.
- Move OS-specific logic into OS-specific files to avoid compile issues on non-Unix platforms.
- Internal API changes related to relaying.
1.18.0 - 2020-03-30
- Introspection now tracks last activity for reads and writes separately (#770)
- Add options to allow overriding SendBufferSize per process name prefix (#772)
1.17.0 - 2020-02-18
- Internal API changes related to relaying.
1.16.0 - 2019-10-14
- Support custom Dialer for outbound connections (#759)
- thrift: Handle TStruct serialization failures gracefully (#744)
1.15.0 - 2019-08-26
- introspection: Introspect any channel by ID. (#756)
- Ensure Introspection endpoints are always available. (#755)
- Fix testutils.WithTestServer incorrectly using RelayHost when creating the server. (#750)
1.14.0 - 2019-05-20
- Expose
CallOptions
caller name for transparent proxying (#741)
1.13.0 - 2019-04-04
- Add
MaxCloseTime
which sets a timeout for graceful connection close. (#724)
- Optimize Thrift string field serialization by eliminating
[]byte(string)
allocation. (#729)
- Return an error if transport header keys/values exceed the maximum allowed string length. (#728)
1.12.0 - 2018-11-13
- Add a channel,
ClosedCh
, to wait for a channel to close. (#718) - Add a Code of Conduct. (#711)
- Tweak error message when sending a large error to mention that we're out of space. (#716)
- Idle sweeper now skips connections that have pending calls. (#712)
1.11.0 - 2018-06-25
- thrift: Support health check type in Health endpoint. (#696)
1.10.0 - 2018-04-02
- Support blackholing requests to trigger client timeout without holding on to resources. (#681)
- introspection: Include channel state in output. (#692)
- introspection: Add inactive connections to output. (#686)
- Inherit deadlines from parent context if available, and timeout is unspecified.
- Ensure outbound tracing headers take precedence over application headers. (#683)
1.9.0 - 2018-01-31
- stats: Add tally reporter to emit tagged metrics. (#676)
- Add optional idle timeout, after which connections will be closed. (#681)
1.8.1 - 2017-11-21
- Always log addresses as strings. (#669)
1.8.0 - 2017-11-06
- Add opt-in active connection health checks. (#318)
- Improve error logging on
thrift.Server
errors. (#663) - Reduce memory usage for idle connections. (#658)
- Unpin and reduce dependencies in
glide.yaml
by usingtestImports
. (#649)
- Don't close connections on ping errors.(#655)
- Avoid holding on to closed connections' memory in peers. (#644)
1.7.0 - 2017-08-04
- Add
WithoutHeaders
to remove TChannel keys from a context.
- Cancel the context on incoming calls if the client connection is closed.
1.6.0 - 2017-06-02
- Add
OnPeerStatusChanged
channel option to receive a notification each time the number of available connections changes for any given peer.
- Locks Apache Thrift to version 0.9.3, 0.10.0 to maintain backward-compatibility.
- Set DiffServ (QoS) bit on outbound connections.
- Improve resilience of the frame parser.
1.5.0 - 2017-03-21
- Add
PeerList.Len
to expose the number of peers in the peer list. - Add
PeerList.GetNew
to only return previously unselected peers.
1.4.0 - 2017-03-01
- Add version information to the channel's LocalPeerInfo.
- Add peers package for peer management utilities such as consistent peer selection.
- Fix SetScoreStrategy not rescoring existing peers. (#583).
1.3.0 - 2017-02-01
- Support Thrift namespaces for thrift-gen.
- Exposes the channel's RootPeerList with
channel.RootPeers()
.
1.2.3 - 2017-01-19
- Improve error messages when an argument reader is closed without reading the EOF. (#567)
- thrift: Fix an issue where we return
nil
if we expected a Thrift exception but none was found (e.g., exception is from the future). (#566) - Fix ListenIP selecting docker interfaces over physical networks. (#565)
- Fix for error when a Thrift payload has completed decoding and attempts to close the argument reader without waiting until EOF. (#564)
- thrift-gen: Fix "namespace go" being ignored even though the Apache thrift generated code was respecting it. (#559)
1.2.2 - 2016-12-21
- Add a unique channel ID for introspection (#548)
- Expose local peer information on {Inbound,Outbound}Call (#537)
- Add remote peer info to connection logger and introspection (#514)
- Don't drop existing headers on a context when using Wrap(ctx) (#547)
- Setting response headers is not goroutine safe, allow using a child context for parallel sub-requests (#549).
- Fix context cancellation not cancelling Dial attempts (#541)
- Only select active connections for calls (#521)
- Treat hostPorts ending in ":0" in the init headers as ephemeral (#513)
1.2.1 - 2016-09-29
- Fix data race on headers when making concurrent calls using the same context. (#505)
1.2.0 - 2016-09-15
- Adds support for routing keys (the TChannel rk transport header).
1.1.0 - 2016-08-25
- Integrate OpenTracing for distributed tracing and context propagation.
As long as a Zipkin-style tracing is configured, TChannel frames still
send tracing information, and
CurrentSpan(ctx)
works as before. All tracer configuration must be handled through OpenTracing. (#426)
- Improve error messages when using the json package and the host:port fails to connect. (#475)
- mockhyperbahn now using inbuilt TChannel relaying to implement in-process forwarding. (#472)
- Drop go1.4 support and add support for go1.7.
- Pass thrift.Context to the thrift.Server's response callback (#465)
1.0.9 - 2016-07-20
- Expose meta endpoints on the "tchannel" service name. (#459)
- Add Go version and tchannel-go library version to introspection. (#457)
- Expose the number of connections on a channel. (#451)
- Better handling of peers where dialed host:port doesn't match the remote connection's reported host:port. (#452)
1.0.8 - 2016-07-15
- Remove dependency on "testing" from "tchannel-go" introduced in v1.0.7.
1.0.7 - 2016-07-15
- Add CallOptions() to IncomingCall which can be used as the call option when making outbound calls to proxy all transport headers.
- Add tracing information to all error frames generated by the library.
- Add GetHandlers for getting all registered methods on a subchannel.
- Expose the peer information for outbound calls.
- Support a separate connection timeout from the context timeout, useful for streaming calls where the stream timeout may be much longer than the connection timeout.
- Fix peer score not being calculated when adding a new outbound connections
1.0.6 - 2016-06-16
- Fix trace span encoding fields in the wrong order
1.0.5 - 2016-04-04
- Use
context.Context
storage for headers sothrift.Context
andtchannel.ContextWithHeaders
can be passed to functions that usecontext.Context
, and have them retain headers. thrift.Server
allows a custom factory to be used forthrift.Context
creation based on the underlyingcontext.Context
and headers map.- Store goroutine stack traces on channel creation that can be accessed via introspection.
1.0.4 - 2016-03-09
- #228: Add registered methods to the introspection output.
- Add ability to set a global handler for a SubChannel.
- Improve handling of network failures during pending calls. Previously, calls would timeout, but now they fail as soon as the network failure is detected.
- Remove ephemeral peers with closed outbound connections.
- #233: Ensure errors returned from Thrift handlers have a non-nil value.
- Introspection now includes information about all channels created in the current process.
- Improved performance when writing Thrift structs
- Make closing message exchanges less disruptive, changes a panic due to closing a channel twice to an error log.
1.0.2 - 2016-01-29
- Extend the
ContextBuilder
API to support setting the transport-level routing delegate header. - Assorted logging and test improvements.
- Set a timeout when making new outbound connections to avoid hanging.
- Fix for #196: Make the initial Hyperbahn advertise more tolerant of transient timeouts.
1.0.1 - 2016-01-19
- Peers can now be removed using PeerList.Remove.
- Add ErrorHandlerFunc to create raw handlers that return errors.
- Retries try to avoid previously selected hosts, rather than just the host:port.
- Create an ArgReader interface (which is an alias for io.ReadCloser) for symmetry with ArgWriter.
- Add ArgReadable and ArgWritable interfaces for the common methods between calls and responses.
- Expose Thrift binary encoding methods (thrift.ReadStruct, thrift.WriteStruct, thrift.ReadHeaders, thrift.WriteHeaders) so callers can easily send Thrift payloads over the streaming interface.
- Bug fix for #181: Shuffle peers on PeerList.Add to avoid biases in peer selection.
- First stable release.
- Support making calls with JSON, Thrift or raw payloads.
- Services use thrift-gen, and implement handlers with a
func(ctx, arg) (res, error)
signature. - Support retries.
- Peer selection (peer heap, prefer incoming strategy, for use with Hyperbahn).
- Graceful channel shutdown.
- TCollector trace reporter with sampling support.
- Metrics collection with StatsD.
- Thrift support, including includes.