Releases: oxia-db/oxia
v0.16.0
highlights
database fingerprint checksum — a new database fingerprint checksum mechanism for verifying database state integrity, along with WAL checksum gauge metrics for improved observability. (#877, #890, #891)
control request replication via WAL — control requests are now replicated through the WAL state machine, ensuring consistency across the cluster. (#882)
leader hint support — when a client sends a request to a non-leader node, the response now includes a hint pointing to the actual leader, reducing unnecessary round-trips. (#883)
negotiated features — support for feature negotiation between client and server, enabling safe rollout of new capabilities. (#878)
bug fixes
- delete idx file before txn to prevent dangling idx on crash (#920) — @mattisonchao
- prevent panic when reading empty WAL index file (#912) — @coderzc
- propagate WAL CRC chain across snapshot recovery (#901) — @mattisonchao
- prevent infinite loop in
balanceHighestNodeon selector error (#895) — @mattisonchao - avoid unexpected dataServer join quorum (#880) — @mattisonchao
- fix type assertion panic in
Cache.Get()when key not found (#881) — @labuladong - eliminate data race in maelstrom message parsing (#918) — @mattisonchao
- eliminate data races on controller logger and term fields (#907) — @mattisonchao
- eliminate data race on
leaderController.logvia atomic term (#903) — @mattisonchao - add read lock to WAL segment
Flushto prevent data race withClose(#893) — @mattisonchao - treat EOF as retriable error on write stream (#917) — @mattisonchao
- continue trying other shards when quarantining in leader rebalance (#908) — @mattisonchao
- re-sort node load ratios after recalculation (#894) — @mattisonchao
- use deterministic protobuf marshaling for notification checksum (#888) — @mattisonchao
improvements
- add retry logic to follower
stateAppliergoroutine (#892) — @mattisonchao - refactor follower controller for better lifecycle management (#887) — @mattisonchao
- dynamic log level changes now affect existing loggers (#914) — @mattisonchao
- upgrade log level from debug to warn on operation failure (#884) — @mattisonchao
ci & build
- add manual Docker build & push workflow (#919) — @mattisonchao
- bump
aquasecurity/trivy-actionfrom 0.33.0 to 0.34.0 (#886) — @dependabot - stabilize flaky
TestControlRequestFeatureEnabled(#915) — @mattisonchao - stabilize flaky
TestLeaderHinttests (#916) — @mattisonchao
full changelog: v0.15.3...v0.16.0
v0.15.3
What's Changed
- feat: introduce the auto release by @mattisonchao in #866
- Fix release workflow by using Makefile target for consistent builds by @Copilot in #868
- Fix: Binary releases missing execute permissions by @Copilot in #870
- feat: add static key file support for OIDC authentication with per-issuer configuration by @Copilot in #874
- Revert "feat: add static key file support for OIDC authentication with per-issuer configuration (#874)" by @mattisonchao in #875
- Feat: add per-issuer OIDC configuration with static key file support by @mattisonchao in #876
- Allow to override version id and modification count by @merlimat in #872
Full Changelog: v0.15.2...v0.15.3
v0.15.2
⚠️ Critical Fix: This release fixes a data loss issue when upgrading from <= v0.14.4.
Versions v0.15.0 and v0.15.1 had a database format conversion bug that could cause data loss during upgrades. If you are on v0.14.4 or earlier, upgrade directly to this version or later. See #846 for details.
⚠️ Critical Fix: Data loss with node expansion (affects <= v0.14.4).
Versions v0.14.4 and earlier had a non-atomic shard moving deletion that could cause data loss when expanding nodes. See #845 for details.
What's Changed
🛠 Bug Fixes
- fix(kvstore): Prevent data loss from crash during DB format conversion by @mattisonchao in #838
- fixes: configurable WAL sync by @mattisonchao in #857
🚀 Features
- feat: Introduce dataserver and coordinator configuration (part.1) by @mattisonchao in #848
- feat: Introduce dataserver and coordinator configuration (part.2) by @mattisonchao in #859
- feat: Introduce dataserver and coordinator configuration (part.3) by @mattisonchao in #860
- feat: make the assignment information become debug level by @mattisonchao in #861
- fix the wrong default cluster config causes breaking by @mattisonchao in #863
- fixes the wrong cluster config parameter name by @mattisonchao in #864
Full Changelog: v0.15.1...v0.15.2
v0.15.1
⚠️ Known Issue: Data loss when upgrading from <= v0.14.4 to this version.
Upgrading from v0.14.4 or earlier to v0.15.0 or v0.15.1 can cause data loss due to a database format conversion issue. Upgrade directly to v0.15.2 or later instead. See #846 for details.
What's Changed
- Set the global Otel meter provider by @merlimat in #830
- Moved server common to oxiad/common by @merlimat in #829
- feat: move load balancer logs to debug level by @mattisonchao in #831
- fixes: wrong package import by @mattisonchao in #832
Full Changelog: v0.15.0...v0.15.1
v0.15.0
What's Changed
- Pin Pebble disk format to a specific version by @merlimat in #748
- Fixed panic in coordinator when not initialized by @merlimat in #751
- Let the coordinator wait to become leader, in case multiple instances come up by @merlimat in #752
- Updated to point to CNCF Code of Conduct by @merlimat in #754
- Switched Copyright to "The Oxia Authors" by @merlimat in #755
- Rename public gRPC to io.oxia.proto.v1.OxiaClient by @merlimat in #756
- Alpine 3.22 by @merlimat in #758
- Upgrade to Go 1.25 and follow newer lint rules by @merlimat in #759
- Use StandaloneServer.ServiceAddr() to reduce boilerplate code in tests by @merlimat in #761
- Use original context if available in Timer.Done() by @merlimat in #762
- Fixed secondary index get when notifications are disabled by @merlimat in #763
- Introduced key encoding for hierarchical sorting by @merlimat in #764
- Fix data race in Zerolog console writer by @merlimat in #765
- Fixed race condition in get sequences test by @merlimat in #766
- Upgrade to Pebble 2.1.0 by @merlimat in #760
- Cache Go deps in CI builds by @merlimat in #768
- Refactored Dockerfile to allow caching of Go deps by @merlimat in #769
- Enhance kv interface to work with different encoders by @merlimat in #767
- Fixed issue with db iterator closed after the callback by @merlimat in #770
- Cache docker builds for Trivy scanner by @merlimat in #771
- Fixed initialization of logger when not using json by @merlimat in #773
- Allow to configure db for different scenarios by @merlimat in #774
- Disable colored log in tests to avoid data race detection in zerolog by @merlimat in #775
- Raft based metadata provider by @merlimat in #757
- Fixed logic for checking metadata version in raft metadata provider by @merlimat in #777
- Coordinator: swapNode() should keep retrying leader election until it succeeds by @merlimat in #781
- Use wait group in more idiomatic way by @merlimat in #784
- Apply timeout to mocked server responses in coordinator test by @merlimat in #785
- Minor clean up of using util methods in shard controller mocked tests by @merlimat in #787
- Handle deletion of swapped out node in a background periodic task by @merlimat in #786
- Removed unnecessary warning in coordinator shutdown by @merlimat in #789
- fixes: flaky test - TestShardController_StartingWithLeaderAlreadyPresent by @mattisonchao in #790
- fixes: deadlock when swap
waitForFollowersToCatchUpby @mattisonchao in #788 - refactor: introduce thread safe shard metadata by @mattisonchao in #791
- Delete charts as it removed to oxia-db/helm-charts by @dao-jun in #782
- refactor: move election leader logic into a separate struct by @mattisonchao in #793
- [feat][admin] Initial Oxia admin commit and add list-namespaces command. by @dao-jun in #792
- fix: using async write for wal benchmark by @mattisonchao in #795
- Fix coordinator NPE by @dao-jun in #797
- Add listnodes admin tool by @dao-jun in #800
- fix: data lost by change ensemble by @mattisonchao in #798
- Add modules for oxia common and client by @merlimat in #802
- Ensure internal keys always sort last for natural ordering by @merlimat in #803
- refactor: rename 'server/node' to 'dataserver' for better semantic clarity by @mattisonchao in #806
- Use range-scan API for CLI list operation by @merlimat in #807
- Fixed server -> dataserver import in client tests by @merlimat in #808
- Revert "Add modules for oxia common and client (#802)" by @merlimat in #809
- Hide internal keys by default in list and range-scan by @merlimat in #810
- refactor: Introduce go workspace by @mattisonchao in #813
- Fixed dependency issue with genproto and workspace by @merlimat in #817
- Allow to configure key-sorting natural/hierarchical on namespaces by @merlimat in #818
- refactor: reorganise the dataserver directory by @mattisonchao in #819
- refactor: rename some plural packages to singular by @mattisonchao in #820
- fixes: fix trivy upload error due to insufficient permission by @mattisonchao in #821
- feat: rename nodeController to dataserverController by @mattisonchao in #822
- Updated jwt, crypto and go-jose dependencies for CVEs by @merlimat in #823
- Removed unused go tools from CI by @merlimat in #825
- Moved
protoundercommon/protoby @merlimat in #824 - fix: rename node to data server in shard controller by @mattisonchao in #826
- Added script to tag the releases by @merlimat in #827
New Contributors
Full Changelog: v0.14.4...v0.15.0
v0.14.4
⚠️ Known Issue: Data loss with node expansion.
This version has a non-atomic shard moving deletion that can cause data loss when expanding nodes. Fixed in v0.15.1. See #845 for details.
⚠️ Known Issue: Data loss when upgrading to v0.15.0 or v0.15.1.
Do not upgrade to v0.15.0 or v0.15.1. Upgrade directly to v0.15.2 or later to avoid data loss from a database format conversion bug. See #846 for details.
What's Changed
- fix(obj): fix the potential pooled object leak by @mattisonchao in #743
- fix(session): avoid complete rpc without response by @mattisonchao in #744
Full Changelog: v0.14.3...v0.14.4
v0.14.3
What's Changed
- build(deps): bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 by @dependabot[bot] in #741
- fix(server): fix the ephemeral key leak by non-atomic operation by @mattisonchao in #742
- feat: introduce committed version IDs to avoid accidentally writing dirty version ID trackers by @mattisonchao in #740
Full Changelog: v0.14.2...v0.14.3
v0.14.2
What's Changed
- feat: support leader rebalance by @mattisonchao in #726
- fixes: fix GHSA-fv92-fjc5-jj9h by @mattisonchao in #735
- fixes: support closable health server to avoid being stuck by @mattisonchao in #734
- feat(coordinator): support node controller graceful close by @mattisonchao in #733
- Always validate shard id not to be null by @merlimat in #736
- fix(leader): fix the concurrent write causes disordered offset by @mattisonchao in #738
Full Changelog: v0.14.1...v0.14.2
v0.14.1
What's Changed
- Removed documentation since it's moved to different repository by @merlimat in #724
- Fixed more usages of old repository name by @merlimat in #725
- fix(tla+): fix wrong name epoch by @mattisonchao in #727
- fix: change doc link to official website by @mattisonchao in #728
- fixes: fixes data race condition by @mattisonchao in #732
- feat: support secondary index name for cmd read operations by @mattisonchao in #731
Full Changelog: v0.14.0...v0.14.1
v0.14.0
What's Changed
- feat(coordinator): support ensemble anti-affinity policies (part 2) by @mattisonchao in #675
- feat: improve leader interface GetNotifications by @mattisonchao in #710
- feat: upgrade gods to v2 and support generics by @mattisonchao in #715
- fix: make sequenceWaiter close Idempotent by @mattisonchao in #717
- feat: change coordinator components packages by @mattisonchao in #716
- Fixed CLI example in getting started docs by @merlimat in #719
- Fixed image version in examples by @merlimat in #720
- Updates repo URL to github.com/oxia-db/oxia by @merlimat in #721
- feat: decouple coordinator components by @mattisonchao in #722
- Report version in CLI command by @merlimat in #723
Full Changelog: v0.13.2...v0.14.0