Releases: streamnative/oxia
v0.5.0
New Features
Get()
operation with floor/ceiling comparison
It's now possible to do a Get()
request for a key that is floor (<=
), ceiling (>=
), lower (<
) or higher >
.
eg.:
key, value, version, err := client.Get(ctx, "my-key", ComparisonFloor())
Partition Key
A PartitionKey
can be specified in all the operations. When a partition key is set, the shard routing mechanism will be based on it instead of using the record key.
eg.:
key1, v1, err := client.Put(ctx, "key-1", []byte("1"), PartitionKey("x"))
key2, v2, err := client.Put(ctx, "key-2", []byte("1"), PartitionKey("x"))
key2, v2, err := client.Put(ctx, "key-3", []byte("1"), PartitionKey("x"))
All these record are going to be stored on the same shard, even though they have different keys.
Operations such as Get()
with floor/ceiling match, List()
and RangeScan()
become more efficient when a PartitionKey()
option is set, since they only need to operate on a single shard.
Sequential Keys
Oxia can help generating unique and monotonically increasing keys composed on an arbitrary number of sequences.
key1, v1, err := client.Put(ctx, "a", []byte("0"), SequenceKeysDeltas(1), PartitionKey("x"))
// key1 -> a-00000000000000000001
key2, v2, err := client.Put(ctx, "a", []byte("0"), SequenceKeysDeltas(5), PartitionKey("x"))
// key2 -> a-00000000000000000006
RangeScan
RangeScan()
is similar to List()
, though it allows to efficiently iterate over a large set of records
Reading Coordinator configuration from config map
When running in Kubernetes, the Oxia coordinator can read the configuration directly from a config map. This will allow to get instant notifications of changes to the configuration and to get them applied immediately.
What's Changed
- improve oxia coordinatior status configmap by @labuladong in #456
- Upgrade to OTel 1.26 by @merlimat in #457
- Switch CI to Go 1.22 by @merlimat in #458
- Upgrade K8S client API lib by @merlimat in #459
- Fixed Trivy scan severity config by @merlimat in #460
- Watch config changes by @labuladong in #462
- Upgrade to protovt 0.6 by @merlimat in #463
- Bump google.golang.org/grpc from 1.58.2 to 1.58.3 by @dependabot in #464
- Ensure notification channel is always closed before client.Close() returns by @merlimat in #466
- Added support for Get() with ComparisonType in Db abstraction by @merlimat in #465
- Server side handling of floor/ceiling get requests by @merlimat in #467
- doc: add file type to avoid confusing by @mattisonchao in #468
- Added client side implementation of ceiling/floor get queries by @merlimat in #469
- Added partition-key to override shard routing by @merlimat in #470
- Only watch config file when running coordinator by @merlimat in #471
- Support sequential write operation on server dbs by @merlimat in #472
- Support sequential keys in client SDK by @merlimat in #474
- Hide internal keys in CLI listing by @merlimat in #475
- Refactored CLI client by @merlimat in #476
- Added CLI options for partition-key, comparison type and sequence keys by @merlimat in #477
- Added delete-range CLI command by @merlimat in #478
- Added range-scan support in oxia db by @merlimat in #479
- Added range-scan support in public RPC by @merlimat in #480
- Implemented range-scan in client API by @merlimat in #481
- Update Busybox to fix CVE-2023-42366 by @merlimat in #482
- Support range-scan in CLI by @merlimat in #483
- Allower to read cluster config directly from the k8s config-map by @merlimat in #484
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
- Fix handling of GetNotifications() request when leader is not fully initialized by @merlimat in #437
- Close all closers when shutting down by @RobertIndie in #438
- Enable Trivy scan for Oxia image by @merlimat in #439
- Check all levels of vulnerabilities with Trivy by @merlimat in #440
- improve deploy doc by @labuladong in #441
- Bump google.golang.org/protobuf from 1.31.0 to 1.33.0 by @dependabot in #442
- *: support TLS/mTLS on the peer and client by @mattisonchao in #443
- Bump golang.org/x/net from 0.18.0 to 0.23.0 by @dependabot in #446
- Use single go-routine instead of mutex for shard-controller by @merlimat in #447
- Coordinator not passing Term in delete shard request by @merlimat in #448
- Close controller when delete shard fails by @merlimat in #449
- Improve CLI tools to display ephemeral node session information by @merlimat in #450
- Update Pebble to stable release v1.1.0 by @merlimat in #451
- Use
Recreate
rollout strategy for coordinator deployment by @merlimat in #452 - Add jq tool to Docker image by @merlimat in #453
- Fixed session expiry with multiple session in a shard by @merlimat in #454
New Contributors
- @RobertIndie made their first contribution in #438
- @labuladong made their first contribution in #441
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- fix(387): add more useful linter by @lsytj0413 in #394
- chore(*): enable prealloc & predel linters by @lsytj0413 in #395
- chore(*): enable nilerr, unparam linter by @lsytj0413 in #396
- fix(*): avoid infinite loop when notifications close by @lsytj0413 in #398
- test(*): flaky TestCoordinator_RebalanceCluster by @lsytj0413 in #400
- chore(*): enable revive linter by @lsytj0413 in #399
- chore(*): enable nilnil linter by @lsytj0413 in #401
- chore(*): enable thelper linter by @lsytj0413 in #402
- chore(*): enable testableexamples linter by @lsytj0413 in #403
- chore(*): enable gosec/godot linter by @lsytj0413 in #404
- chore(*): enable contextcheck、noctx、gomoddirectives linter by @lsytj0413 in #405
- chore(*): enable gocritic linter by @lsytj0413 in #406
- chore(*): enable more revive linter rules by @lsytj0413 in #408
- chore(*): enable revive.cyclomatic rules by @lsytj0413 in #409
- chore(*): enable revive.typeassert rules by @lsytj0413 in #410
- chore(*): enable revive.exported rules by @lsytj0413 in #411
- chore(*): enable revive.bare-return rules by @lsytj0413 in #413
- Start/stop node controllers on cluster expansion/shrinking by @merlimat in #414
- chore(*): enable revive.flag-parameter rules by @lsytj0413 in #416
- Fixed head offset in follower after a snapshot load by @merlimat in #415
- Perform client retry on InvalidStatus error by @merlimat in #417
- Added shard and target node info when logging gRPC failures by @merlimat in #418
- Continue to push assignment updates to nodes that were removed from the list by @merlimat in #419
- fix(327): assert the lastPushed as -1 or 0 by @lsytj0413 in #421
- chore(*): enable revive.cognitive-complexity rules by @lsytj0413 in #420
- Fixed wrong error returned after NewTerm failure by @merlimat in #422
- Add K8S startup probe by @merlimat in #423
- fix(426): discard entry and writingIdx when TruncateLog by @lsytj0413 in #427
- Fixed create and modified timestamps not getting set by @merlimat in #431
- Update Alpine base image to 3.19 by @merlimat in #433
- Allow to list keys with no min or max boundaries by @merlimat in #434
- Fixes in session manager by @merlimat in #432
- Close session in go client close by @merlimat in #435
Full Changelog: v0.2.1...v0.3.0
v0.2.1
What's Changed
- Update CI to Go 1.21 by @merlimat in #382
- Update OTel to 1.20 by @merlimat in #381
- Update Pebble to latest version by @merlimat in #383
- Updated gin-gonic to 1.9.1 by @merlimat in #384
- fix(380): change module path to github.com/streamnative/oxia by @lsytj0413 in #385
- refactor(*): group import by standard/third/current by @lsytj0413 in #386
- Upgrade OpenSSL in Alpine image by @merlimat in #391
- fix(388): replace zerolog reference with slog by @lsytj0413 in #390
- Use "error" instead of "Error" as key in logs with attached errors by @merlimat in #392
- fix(324): close channel after iterator is closed by @lsytj0413 in #393
Full Changelog: v0.2.0...v0.2.1
v0.2.0
What's Changed
- Added Oxia logo by @merlimat in #337
- [Doc] Fix doc for oxia operator by @liangyuanpeng in #340
- [doc] Fix doc errors by @aahmed-se in #339
- Resize the logo by @mattisonchao in #341
- Support oxia operator based on SDK - Part 1 by @mattisonchao in #342
- Bump golang.org/x/net from 0.3.1-0.20221206200815-1e63c2f08a10 to 0.7.0 in /oxia-operator by @dependabot in #343
- Add
oxia_cluster
label to all the pods by @merlimat in #345 - Fixed dashboards to use
kubernetes_pod_name
labels by @merlimat in #347 - Added readiness support in server health-check by @merlimat in #351
- Fixed reopening of db in follower after a failed snapshot request by @merlimat in #349
- Fixed metrics gauge callback deadlock by @merlimat in #350
- Use
-svc
internal service for readiness by @merlimat in #352 - Allow configure Pebble cache size by @merlimat in #353
- Refactored wal code by @merlimat in #348
- Fixed deadlock in leader controller gauge callback by @merlimat in #354
- Abort BecomeLeader and Write requests on timeout by @merlimat in #355
- Remove oxia operator and update related doc by @ericsyh in #356
- Update oxia helm chart metadata by @ericsyh in #357
- Use buffered channel in coordinator NewTerm quorum response tracking by @merlimat in #359
- Close read-only segments after timeout by @merlimat in #360
- [build] do apt-get update to avoid missing package versions by @merlimat in #362
- Use Seek() to create new wal segment by @merlimat in #361
- Re-Create session manager on BecomeLeader by @merlimat in #364
- Fixed deadlock in the leader controller wal batcher by @merlimat in #363
- Truncate() call was not passing the namespace in the RPC by @merlimat in #365
- Use VT proto for serialization by @merlimat in #366
- Upgrade Otel to latest stable version by @merlimat in #369
- Fixed node controller assignemnts update after pods restart by @merlimat in #368
- Update Pebble to latest version by @merlimat in #370
- Added option to skip WAL data sync by @merlimat in #367
- Added Pebble DB CLI util tool by @merlimat in #371
- Add documentation for bare metal deployment by @mattisonchao in #372
- remove $ signs from the command lines in getting-started.md by @jak78 in #373
- fix(docs): typo ks8 -> k8s by @lsytj0413 in #375
- Bump golang.org/x/net from 0.10.0 to 0.17.0 by @dependabot in #374
- Bump google.golang.org/grpc from 1.54.0 to 1.56.3 by @dependabot in #376
- Upgrade to Alpine 3.18 to solve security issues by @merlimat in #378
- Fix parse uint to use signed integer by @merlimat in #377
New Contributors
- @liangyuanpeng made their first contribution in #340
- @aahmed-se made their first contribution in #339
- @ericsyh made their first contribution in #356
- @jak78 made their first contribution in #373
- @lsytj0413 made their first contribution in #375
Full Changelog: v0.1.0...v0.2.0
v0.1.0 Initial release
Run Maelstrom in CI (#336)