Changelog
v0.5.2 (unreleased)
Bugfixes
- Fix
regatta.v1.KV/IterateRangewithoutrange_endreturning 0 results.
v0.5.1
Improvements
- API server will now by default use fixed number of pre-created worker go routines for stream handling. The behaviour could be overridden by setting
api.stream-workersconfig value. - regatta.v1.KV/IterateRange now uses coroutine instead of full goroutine.
Security
- API server max number of concurrent connections can be set by
api.max-concurrent-connectionsconfig value. - API server max number of concurrent streams can be set by
api.max-concurrent-streamsconfig value.
Bugfixes
- Fix storage compaction metrics.
v0.5.0
Highlights
Follower to leader replication
- The write API (Put, DeleteRange, Txn) is now available on leader cluster nodes as well.
- The API provides read after write guarantee by relying on backpropagation from the leader.
Dynamic tables management
- Tables now could be managed dynamically during the runtime of the server using newly provided
regatta.v1.TablesAPI. - Tables API could be secured by an API token using
tables.tokenconfiguration value.
Security
- API port now supports mTLS
- API port mTLS can verify Hostname or CN in presented certificate.
- Follower to Leader mTLS can now verify Hostname or CN in presented certificate.
Improvements
- Improve on API allocations when deserializing gRPC messages.
- Support
zstdAPI compression. - Removed obsolete table manager cache that could have caused hard to debug race conditions.
- Bump to Go 1.22.
Deprecations
tables.namesandtables.deleteconfiguration values were deprecated and will be removed in future releases.
Bugfixes
- Proper authentication of
maintenance.v1.Backup/RestoreAPI endpoint. - When table is deleted in the leader cluster the followers will gracefully handle the situation by deleting the table locally and stopping the replication.
- Fixed potential Engine deadlock when shutting down the server.
v0.4.1
Improvements
- Server now reports transient errors for requests that could be potentially retried as
codes.Unavailable.
Bugfixes
- Fixed the default timeout of
KV/IterateRangeoperation.
v0.4.0
Breaking changes
- Remove maintenance server port, the API is now available on standard API port. It could still though be secured by a separate API token.
- Replaced
clusterIDwithshard_idin metric label names.
Features
- Added new
regatta.v1.KV/IterateRangeAPI. - Added option to get the server configuration via the
regatta.v1.Cluster/StatusAPI. - Added
memberlist.cluster-nameandmemberlist.node-nameoptions.- Both help identifying cluster and nodes in CLuster API responses.
- Cluster name setting prevents accidental pairing of multiple clusters running in the same network. (with different cluster name setting)
- Added
api.advertise-addressoption to split address advertised to clients from the listen address. - Removed
maintenance.addressconfig option. - Removed
maintenance.cert-filenameconfig option. - Removed
maintenance.key-filenameconfig option.
Bugfixes
- Fix
KV/DeleteRangeCounterroneously returning1if no key was deleted. - Fix
KV/DeleteRangePrevKVpanicking when previous key did not exist.
v0.3.2
A bugfix release, fixes critical issue in replication server TLS handling.
Bugfixes
- Fix replication server TLS.
v0.3.1
A bugfix release, with small improvements.
Improvements
- Improve startup logging and failure reporting.
Bugfixes
- Fix
rest.addresshandling. - Fix race-conditions in Raft events handling.
v0.3.0
Release brings a brand-new Cluster API as well as ability to listen over plain or unix socket connection.
Breaking changes
- Semantics of
api.addressreplication.addressandmaintenance.addresschanged. The protocol is now mandatory could be one ofhttp|https|unix|unixs. - Removed
api.reflection-apiconfiguration.
Features
- Armada could now serve its api on unix sockets.
- Support for serving over plain (non-TLS) gRPC added.
- Added
regatta.v1.Clusterapi.
Improvements
- Improve
versioncommand output. - Follower can connect to leader over plain connection or via unix socket.
Bugfixes
- Fix cluster member node registration.
v0.2.3
Release with profile guided optimization.
Improvements
- Removal of few obsolete dependencies.
- Set toolchain in go.mod file.
- Enable profile guided optimizations.
v0.2.2
Minor release with just updated dependencies.
v0.2.1
Release focuses on stability and performance of the leader-follower replication.
Breaking changes
- Leader
replication.logCacheSizenow defaults to 0.
Features
- Add
replication.keepalive-timeconfig option for follower. Sets how often the keepalive should be sent. - Add
replication.keepalive-timeoutconfig option for follower. Sets how long to wait for an ack of the keepalive message.
Improvements
- Improve follower replication throughput and latency.
- Snapshot recovery type could be switched on a running cluster safely.
- Bump to Go 1.21.
- Keepalive for replication connection to tackle misbehaving LBs.
Bugfixes
- Fix release image cosign.
- Fix off by one replication error.
v0.2.0
Release is mostly focused on tidying up the docs and code base and on resource consumption improvements.
- New way of producing table snapshots is introduced that should lead to quicker and more efficient process of recovering shards in a Raft cluster.
- Experimental Tan logdb feature was promoted to a regular and made a default choice.
- Gossip based cluster registry was added, the necessary migration is handled automatically by the new version of the
armadakv/armada-helmhelm chart. If you want to know more refer to the documentation ofmemberlistflags.
Breaking changes
- Removal of
--experimental.tanlogdbflag. - Addition of gossip based cluster registry.
regatta.v1.KV/Rangenow returns empty response instead ofNOT_FOUNDerror if result of the query is an empty range. Implements proposal #001.
Features
- New
--raft.logdbflag (defaults to Tan). - Added
--memberlist.address,--memberlist.advertise-addressand--memberlist.membersflags to configure cluster registry. - Added a raft cluster snapshot mode option
--raft.snapshot-recovery-typewhich defaults to newcheckpointmode. - Added a flag for configuring shared table cache size
--storage.table-cache-sizewhich defaults to1024. - Added support for
gzip, andsnappycompression for API calls.
Improvements
- Compressed Log replication messages to lower API bandwidth usage.
- Bump to Go 1.20.
- Pebble instances table cache is now shared.
- Single key lookups now utilise bloom filters optimizing the "key not present" case.
- Added compaction metrics of pebble instances.
Bugfixes
- Removing kafka package leftovers.
- Improving logreader tests.
- Fixed raft header returned from non-leader cluster nodes.
- Fixed value of
Deletedfield of theDeleteRangeresponse. - Fixed potential DOS by limiting the storage iterator with max RPC size.
v0.1.0
Initial Armada v0.1.0 Release
This release was made possible thanks to the contributions of @jizi @martinvizvary @jojand @mrackoa and @juldou :rocket::tada:
Special shout-out to @coufalja for his efforts!