Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x.
This bug fix release fixes an issue where Linkerd can send excessive load to Namerd in certain situations when Linkerd is unable to establish TCP connections to services. To remedy this, detailed delegation information has been removed from error responses returned by Linkerd. This detailed delegation information is still available by using the dtab page of the Linkerd admin server.
This Linkerd release includes bug fixes for Namerd's k8s watch API as well as memory management
improvements in the io.l5d.zk
storage plugin. This release features a new failure detector
module in the io.l5d.mesh
interpreter that sends "heartbeat" pings on all HTTP/2 connections to
Namerd. This is intended to monitor the health of connections between Linkerd and Namerd so that
connections are torn down and re-established if a ping message is not received within a configured
amount of time.
This release also includes doc updates from the following contributors:
A big shoutout to all contributors listed above for their great work!
Full release notes:
OutOfMemoryErrorException
caused by OpenJ9's JDK base imageio.l5d.zk
dtab storage moduleio.l5d.mesh
interpreter to help monitor the health of
connections to Namerd. The failure detector can be configured by providing a minPeriodMs
which sets the duration between each successive ping and a closeTimeoutMs
parameter that
sets a duration that must elapse before a connection is marked as "unhealthy"socketOptions
in the client section of a Linkerd configThe first 1.x release of the year brings minor bug fixes to Namerd, the io.l5d.consul
and
io.l5d.curator
namers. This release features contributions from NCBI
and ThreeComma. A big thank you to edio and
Chris Goffinet for their contributions in this release.
Full release notes:
io.l5d.consul
namer's error handling in cases were it receives intermittent 5xx
HTTP errors from Consuljava.lang.NoSuchMethodError
that would sometimes occur when using the io.l5d.curator
namerNullPointerException
that would occur when using the io.l5d.mesh
interface in Namerdbacklog
to socketOptions
that allows you to set up a
backlog queue size for TCP connectionsinterpreter_state
watch endpoint would sometimes display incorrect
IP addressesLinkerd 1.6.0 includes a Finagle upgrade that reduces direct memory allocation and adds support for more efficient HTTP/1.1 streaming for large HTTP requests. This release also improves Linkerd's execution script to run with Java 9 and higher. Finally, this release adds a new gRPC response-classifier that may be configured with user defined gRPC status codes.
Full release notes:
Breaking Change
requestAuthorizers
are now configured in the client section of a router configuration.maxChunkKB
has been removed and is no longer configurable for HTTP/1.1 routers. Rather than enforcing a hard size limit, Linkerd now streams HTTP/1.1 chunked messages that exceed streamAfterContentLengthKB
HTTP/1.1
streamAfterContentLengthKB
that sets a threshold at which HTTP messages will be streamed instead of being fully buffered in memory, even when chunked-encoding is not used.Consul
io.l5d.consul
namer would be cleared if a 5xx API response was received from Consul.gRPC
io.l5d.h2.grpc.*
response classifiers to classify gRPC status codes as
Success
based off of a user-defined list within the response classification section of a config.Fixes a startup issue where Linkerd would fail to load readTimeoutMs
and writeTimeoutMs
values from socket option configs.
Fixes Linkerd's executable script to work with Java version 9 and higher.
Upgrades Finagle to 18.12.0 which reduces the amount of direct memory Linkerd allocates at startup time.
Linkerd 1.5.2 adds performance improvements to HTTP/2, dramatically improving throughput when sending many small frames as is common when using unary gRPC methods. It also fixes a long standing race condition where Linkerd could get stuck using out of date endpoint data from the Kubernetes API.
Full release notes:
exception
label.keepAlive
property in the server socket options config. This allows you to enable the SO_KEEPALIVE socket option which removes dead connections that did not close properly and can therefore help prevent connection leaks. Big thanks to Jonathan Reichhold for this!Linkerd 1.5.1 adds a new io.l5d.consul.interpreter
that allows Linkerd to read dtabs directly from
a Consul KV store agent instead of using Namerd. In addition, this release fixes an issue in
the HTTP/2 router where Linkerd would get stuck handling connections in certain cases.
This release features contributions from OfferUp, Planet Labs and Buoyant with a special shoutout to Leo Liang and Chris Taylor for their work on fixing a bug in the DNS SRV namer.
Full release notes:
RST_STREAM
frame to its remote peer. This was causing gRPC
clients to experience timeout errors intermittently because connections between Linkerd and its
remote peers weren't being closed properly.maxConcurrentStreamsPerConnection
config value for the h2
router to 1000
by default
to prevent Linkerd from running out of memory when HTTP/2 clients leak connection streams.io.l5d.consul
namer HTTP polling requests to prevent an issue where
the namer holds on to stale service discovery information.io.l5d.consul.interpreter
that allows Linkerd to read dtabs directly from a Consul
KV store.io.l5d.dnssrv
namer would get into a bad state and fail to resolve
service names.BalancerRegistry
failing to properly remove
Balancer
objects.Linkerd 1.5.0 adds the long awaited ability to make Linkerd config changes with
zero downtime! 🤯 This release adds the socketOptions.reusePort
config property which allows
multiple processes to bind to the same port. In this way, you can start a new Linkerd process
and wait for it to start serving requests before gracefully shutting down the old Linkerd process.
Note that this feature is only available on Linux 3.9 distributions and newer.
This release features contributions from Applause, ThreeComma, GuteFrage GmbH, and Buoyant. An extra special thank you to Zack Angelo for laying the groundwork in Finagle for the reusePort feature!
Full release notes:
threshold
and windowSize
options have been removed from the failureThreshold
config in the Namerd interpreter. These options were of limited value and are no longer supported by Finagle.socketOptions
config in a server config.SO_REUSEPORT
socket option. This allows multiple processes to bind to the same port and is a great way to do zero downtime Linkerd deploys.Linkerd 1.4.6 adds even more watch state endpoints to Linkerd's debugging arsenal, allowing you to inspect the state of Linkerd’s watches easily. This release adds watch state endpoints for the Kubernetes ConfigMap interpreter as well as the Marathon and filesystem namers.
Full release notes:
x-forwarded-client-cert
header was not always cleared on incoming requests.io.l5d.etcd
namer client.io.l5d.marathon
, io.l5d.fs
, and io.l5d.k8s.configMap
watch state endpoints to allow diagnosis of Linkerd’s various watches.io.l5d.zipkin
trace propagation plugin that writes Zipkin B3 trace headers to outgoing requests. Previously, Zipkin trace headers were ignored by Linkerd in order for Linkerd to not interfere with other tracing systems like Zipkin.io.l5d.destination
interface which implements the Linkerd destination API.
Linkerd 1.4.5 contains some minor bugfixes and introduces two much-requested features. First, it is now possible to selectively disable Linkerd's admin endpoints, e.g., keep the UI functional but to disable the shutdown endpoint. A huge thanks to Robert Panzer for all his hard work on this.
Second, we've added experimental support for the OpenJ9 JVM.
Preliminary tests with OpenJ9 exhibit a 3x reduction in startup time, a 40% reduction in memory
footprint, and a 3x reduction in p99 latency. You can find a Linkerd+OpenJ9 Docker image at
buoyantio/linkerd:1.4.5-openj9-experimental
on Docker Hub.
Full release notes:
security
section to the admin config that controls which admin endpoints are enabledLinkerd 1.4.4 continues our focus on diagnostics, performance, and stability. This release features several performance and diagnostics improvements, including better handling of HTTP/2 edge cases, new watch state introspection for the Consul namer, and better isolation of admin page serving from the primary data path. It also features a new, pluggable trace propagation module that allows for easier integration with tracing systems like OpenTracing.
This release features contributions from Salesforce, Walmart, WePay, Comcast, ScalaConsultants, OfferUp, Buoyant, and more. A big thank you to:
Full release notes:
trustCerts
config field in the client TLS section in favor of
trustCertsBundle
. This allows you to use multiple trust certs in one file and avoids the need
for Linkerd to create temporary files.ConnectionFailed
exception sent back to a client via Linkerd.l5d-err
header in an HTTP/2 response.io.l5d.consul
namer.io.l5d.consul
namer sometimes does not retry ConnectionRefused
exception.io.l5d.consul
namer returns a single IP for a service node instead of
multiple IP addresses for a service node.intepreter_state
endpoint was not available for interpreters that
contained a transformer.namer_state
endpoint to expose namers that use transformers.