Releases: apache/kvrocks-controller
1.2.0
Highlights: this release introduces a brand-new Web UI experience with a complete redesign and several functional enhancements:
- Modernized navigation and layout with dark mode support.
- Redesigned pages across cluster, shard, namespace, node, and homepage.
- Improved usability with breadcrumb navigation, refined spacing, and updated visuals.
- New features in the UI, including shard master failover and cluster slot migration directly from the interface.
In addition, this release brings support for PostgreSQL as a storage engine, slot-range-based migration, enhanced logging, and improved cluster synchronization.
New Features
- Add Docker instructions to README (#261)
- Add support for PostgreSQL as a store engine (#255)
- Save logs to a file and rotate it (#270)
- Update the latest cluster info from the node whose version is larger than the local cluster version (#271)
- Add support for migrating with slot range (#304)
- Build the kvrocks container to allow running multiple instances (#305)
- Enhance the migration test cases with the slot range (#309)
- Return its ID when creating a new node (#307)
- Add the failover API into docs (#311)
- Sync cluster info to nodes concurrently (#320)
- Validate the preferred node ID format in the failover API (#323)
- Enhance the slave node promotion (#340)
- Replace min_alive_size to max_ping_count in config.yaml (#350)
WebUI Feature Work / Redesigns:
- Redesigned webpage (#281)
- feat(webui): redesign the footer element (#287)
- feat(webui): make the top navbar more modern (#297)
- feat(webui/header): move tabs to right & add breadcrumb navigation (#314)
- feat(webui/homepage&footer): Redesign homepage and footer with dark mode (#316)
- feat(webui/namespace): redesign namespace and sidebar (#319)
- feat(webui/cluster): redesign cluster page (#322)
- feat(webui/shard): redesign shard page (#325)
- feat(webui/node): redesign node page (#327)
- feat(webui/node): redesign node detailed page (#330)
- feat(webui): refined all pages, added border radius, fixed spacing issues (#336)
- feat(webui): implemented shard master failover, added delete icon in list view (#337)
- feat(webui): implemented cluster slot migration (#341)
Bug Fixes
- Fix wrong check if the migrating slot in the source node (#269)
- Fix typo in the main UI heading (#279)
- Fix log for slot migration success (#277)
- fix consul engine bug when calling Set and List (#283)
- Fixed the top Navigation Bar blue color while reloading (#290)
- fixing license checker path (#294)
- Fix npm build error and build web ui in CI (#296)
- Fix migration info may be empty when fetching migrating_state from node fails (#300)
- Fix the migrating slot was not compatible with the old format (#310)
- Fix data race when migrating slots (#324)
- Fix nil pointer when printing the MigratingSlot string function (#332)
- Fix HasOverlap might return the wrong result (#335)
- The failover command previously gave EOF (#344)
- Fix test case failure after hardening the promote master behavior (#354)
- Fix flaky test in cluster failover (#355)
- Fix leader change hasn't updated prevTermLeader when losing the leader (#353)
- Fix the data race when migrating slots on multi-shards (#352)
- Marshal the value into the null value if the slot is not migrating (#346)
Misc
- Update copyright date in NOTICE (#260)
- Update godeps (#259, #262, #263, #264, #275, #289, #299)
- Add Prettier and format all files (#288)
- Use gotestsum to beautify the test output (#326)
- Require CI must be passed before merging (#338)
- Enable dismiss_stale_reviews in .asf.yaml (#343)
- Add branch 1.0 and 1.1 as protected branches in .asf.yaml (#345)
- Enable the auto-merge and the update branch feature in CI (#356)
New Contributors
- @greatsharp made their first contribution in #270
- @Jitmisra made their first contribution in #279
- @travisshivers made their first contribution in #277
- @bseto made their first contribution in #283
- @shubham-j-sde made their first contribution in #287
- @SharonIV0x86 made their first contribution in #288
- @hll1213181368 made their first contribution in #332
- @superchee0526 made their first contribution in #353
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Highlights
We are excited to announce the release of the embedded raft storage in this version. Users don't have to introduce other external components to store the metadata. Also, we now support Hashicorp Consul as our metadata storage, big thanks to the contributor @borismartinovic01.
New Features
- Implement the cluster management UI for Kvrocks controller by @CulturalProfessor in #197
- Implement the shard management UI for Kvrocks controller by @CulturalProfessor in #202
- Add support of changing raft peers via HTTP api by @git-hulk in #232
- Add basic instruction for the raft engine in README by @git-hulk in #233
- Add support of managing the raft cluster via the client by @git-hulk in #258
- Implement the node management, import cluster, migrate slot UI for Kvrocks controller by @CulturalProfessor in #204
- Add support for Consul as store engine by @borismartinovic01 in #240
Bug Fixes
- Fix client list command didn't handle API response error correctly by @ninuxer in #199
- Fix should use json.Unmarshal instead of gin.BindJSON by @git-hulk in #196
- Replace
docker-composewithdocker composeby @jihuayu in #198 - Fix wrong slot range check condition when migrating slot by @git-hulk in #208
- Fix empty slot range is not allowed when importing a cluster by @git-hulk in #212
- Fix data race while updating the cluster info by @git-hulk in #217
- Fix some wording about Raft in the README by @PragmaTwice in #234
- Fix flaky test case in raft engine by @git-hulk in #235
- Avoid syncing the cluster information to the node if it's restoring by @git-hulk in #236
- Copy licenses to Dockerfile by @PragmaTwice in #193
- Move build.sh into the scripts dir by @git-hulk in #194
- Improve readme by @caicancai in #203
- Extract mocked Engine to a separate file by @torwig in #205
- Fix should update cluster information to the remote store first by @git-hulk in #237
- Relax the cluster version check when updating the cluster by @git-hulk in #238
- Fix nil pointer when cloning the cluster by @git-hulk in #242
- Remove the detection of GOARCH and GOOS when building by @git-hulk in #218
- Introduce etcd's raft to implement the KV store by @git-hulk in #222
*Fix typo: dail -> dial by @fukua95 in #224 - Fix missing yaml tag in raft config and List API didn't work correctly by @git-hulk in #228
- Fix data race when updating the raft snapshot and compact threshold by @git-hulk in #253
Misc
- Bump golangci-lint v1.63.4 by @aleksraiden in #244
- Update raft logger interface by @aleksraiden in #243
- Change etcd image to v3.5.17 by @aleksraiden in #247
- Bump golang to 1.23 by @aleksraiden in #246
- Update README with Consul support by @aleksraiden in #248
- Update all go deps by @aleksraiden in #249
- Update github actions to latest by @aleksraiden in #251
- Update NOTICE and license for consul api package by @git-hulk in #252
- Use sync/atomic instead of Uber's implementation by @torwig in #256
- Update deps by @aleksraiden in #257
New Contributors
- @ninuxer made their first contribution in #199
- @torwig made their first contribution in #205
- @fukua95 made their first contribution in #224
- @borismartinovic01 made their first contribution in #240
Full Changelog: v1.0.0...v1.1.0-rc1
v1.0.0
What's Changed
This is the first official release since entering ASF. the new release contains many improvements and fixes, as well as new features.
New Features
- Add support of the terminal client for the server by @git-hulk in #171
- Add support of the failover command by @git-hulk in #173
- Add the support of using Apache Zookeeper as an alternative storage by @jihuayu in #126
Bug Fixes
- Remove the migration and failover history from the storage by @git-hulk in #121
- Add import cluster API for adding existing clusters by @git-hulk in #120
- Fix missing password if it's set by @git-hulk in #122
- Don't exit the process while receiving the SIGHUP signal by @git-hulk in #123
- Fix typo in API.md by @jihuayu in #128
- Fix missing ERR prefix in error message by @xiaobiaozhao in #145
- Fix create cluster API field replica to replicas by @cyningsun in #148
- Fix the request method error in Import Cluster doc. by @jihuayu in #150
- Don't add the node into the failover candidates if it's not a master node by @git-hulk in #164
- Fix flaky test in controller module by @git-hulk in #170
- Fix the error check after Kvrocks removes the ERR prefix by @git-hulk in #188
- Avoid creating too many Redis clients by reusing by @erwadba in #187
- Fix possible slot range loss in the importing API by @git-hulk in #189
Improvements
- Add NOTICE file for the controller server by @git-hulk in #174
- Add the random string when generating the session id by @git-hulk in #172
- Changed the etcd docker image version to v3.5.13 by @CulturalProfessor in #181
- Add the package source script for creating release tarball by @git-hulk in #175
- Remove unused build flags by @git-hulk in #192
- Require at least one approval before merging by @PragmaTwice in #168
- Update NOTICE by @yuhaoran1214 in #147
- Improve the operation of slot in SlotRanges by @git-hulk in #169
- Replace ioutil with os by @xiaobiaozhao in #133
- Add ASF header for source files by @git-hulk in #115
- Rename kvrocks_controller to kvrocks-controller by @git-hulk in #116
- Add NOTICE and asf.yaml by @PragmaTwice in #117
- Add notification in .asf.yaml by @PragmaTwice in #118
- Refactor CI workflow by @PragmaTwice in #119
- Add NOTICE to docker images by @PragmaTwice in #125
- Modify the CI running conditions by @jihuayu in #127
- Add
sync.Groupto wait for the election goroutines to exit for etcd storage by @jihuayu in #132 - Refactor the implementation of the controller's probe and migration by @git-hulk in #167
- update gin-gonic/gin from 1.7.3 to 1.7.4 by @wsehjk in #155
- Parallel send the probe request in the same cluster by @git-hulk in #158
- Add the failure count to the probe log message by @git-hulk in #163
New Contributors
- @jihuayu made their first contribution in #127
- @xiaobiaozhao made their first contribution in #133
- @yuhaoran1214 made their first contribution in #147
- @cyningsun made their first contribution in #148
- @wsehjk made their first contribution in #155
- @CulturalProfessor made their first contribution in #181
- @erwadba made their first contribution in #187
Full Changelog: v0.3.1...v1.0.0
v0.2.0
Release v0.1.0
This release mainly contains below features:
- Create / List / Delete namespace
- Create / List / Delete cluster
- Create / List / Delete shard
- Health check and auto-failover between master and slaves
The slot migration is still working in progress, will release them in the next version.
NOTICE: This version is still NOT stable for production.