These 70 commits are when the Protocol Buffers files have changed:
Commit: | 34ebe93 | |
---|---|---|
Author: | Qiang Zhao | |
Committer: | Qiang Zhao |
step commit
Commit: | 0a516df | |
---|---|---|
Author: | Qiang Zhao | |
Committer: | Qiang Zhao |
step commit
Commit: | e83a133 | |
---|---|---|
Author: | Qiang Zhao | |
Committer: | Qiang Zhao |
step commit
Commit: | 76555b0 | |
---|---|---|
Author: | Qiang Zhao |
fix: fix assignment lost when restart node
Commit: | 0b405d7 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Allow to pass the same secondary index name multiple times on the same record (#546)
The documentation is generated from this commit.
Commit: | 583497a | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Protobuf changes for secondary indexes (#541)
Commit: | 76e9f52 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
On delete-range send 1 single notification to clients (#532) When there is a delete-range request, we are currently sending 1 `deleted` notification for each of the keys that were deleted in the range. The problem is that the number of keys in the range is unbounded and can lead to a huge batch in the DB and also to a big notification batch to send out to client. It's not easy to split the notification batch, since it needs to be written atomically with the db update itself. Instead, we add a new notification type that will simply tell the client that a range of keys was deleted.
Commit: | 2db3434 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Allow to disable notifications on a namespace (#526) This is part-1 of the changes. It adds the option to configure a namespace with notifications disabled. If a use case only needs key-value semantics and doesn't use notifications, we can disable them to avoid the overhead. (Part-2 will use the configuration to implement the notifications skipping).
Commit: | f8b82de | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Rename ShardId field to Shard (#511) Renaming the protobuf field from `ShardId` to `Shard`. The motivation is to have consistent `shard: 123` in the logs, such that filtering them based on shard becomes easier. All logs context are already using the `shard` label, though when we print Protobuf struct directly, it would today have `shardId`.
Commit: | 4c82804 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added server side support for WriteStream operation (#499)
Commit: | 78a820f | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added range-scan support in oxia db (#479)
Commit: | 1077dee | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Support sequential write operation on server dbs (#472)
Commit: | b09a8bf | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added partition-key to override shard routing (#470)
Commit: | 821a731 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Server side handling of floor/ceiling get requests (#467)
Commit: | c53fb3b | |
---|---|---|
Author: | Mattison Chao |
*: Update license
Commit: | 8cccb57 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Use VT proto for serialization (#366) Using https://github.com/planetscale/vtprotobuf for adding extra methods to the generated Protobuf code. The extra marshallVT/unmarshallVT methods are generated as "rolled-out" code instead of using reflection so they're using much less CPU and memory allocations. It's also capable of generating hooks for getting objects from pool.
Commit: | dcdd34b | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Include head & commit offset in GetStatus (#326)
Commit: | 518db2f | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added server side support for deleting shards (#299)
Commit: | a4a0db5 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Changed shard id type to int64 (#296) With namespaces, we'll be able to create and delete shards. It will be safer to use `int64` rather than `uint32` to avoid having to deal with any rollover.
Commit: | 138812a | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Passing namespace to server components for metrics and logs (#292)
Commit: | d0f4ca6 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added namespace into assignments dispatcher (#291)
Commit: | 42f3233 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added support in coordinator for multiple namespaces (#289) Added concept of "default" namespace. `ReplicationFactor` and `InitialShardsCount` are now moved at the namespace level.
Commit: | 8f572e5 | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Make KeepAlives non-streaming (#267)
Commit: | 5e707db | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Streaming read (#257)
Commit: | c1c1823 | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Remove batched list (#250) stacked on #245 diff: https://github.com/nahguam/oxia/compare/add-list-rpc...nahguam:oxia:remove-batched-list?expand=1
Commit: | c08a264 | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Split List out to separate streaming rpc (#245)
Commit: | 2b5b49c | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added client identity (#249) Added concept of client identity in the API: 1. A client can pass an optional `Identity` option (string). If none is passed, a UUID is internally generated 2. A session is tied to a particular client's identity 3. The client identity is the same across all the shards 4. The identity is exposed in the `Version` object (for ephemeral records) 5. Applications can make several uses of client identity: 1. Specify the client identity as in "node-port" of a particular service 2. Debug to know who created an ephemeral record 3. Allow creating more complex abstractions by identifying "was this record created by me?" 4. Maintain the identity across restarts of the same applications (e.g.: restart a pod that comes back up with the same name and will use the same client identity). There will be no effort from Oxia to disallow conflicting identities, though they should be discouraged.
Commit: | a6e423e | |
---|---|---|
Author: | Andras Beni | |
Committer: | GitHub |
Add batching in the leader, before writing to WAL (#237)
Commit: | 4f11d2b | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed Payload -> Value (#239) Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | 1dec117 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed Stat -> Version (#233) 1. Renaming the concept of `Stat` to `Version` object 2. Changed `Version` field into `VersionId` which represents the offset when the record was modified 3. Added `ModificationsCount` field to let users know how many changes since the record was last created Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | a6c7ad4 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed Fence -> NewTerm (#232) Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | 2efbfae | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
proto cleanup (#230) * Fix import path (remove 'proto/' prefix) * Apply make proto_format * Apply protolint fixes * enums CAPITALS_WITH_UNDERSCORES * sessionId -> session_id * import order Co-authored-by: Matteo Merli <mmerli@apache.org>
Commit: | 039312c | |
---|---|---|
Author: | Andras Beni | |
Committer: | GitHub |
Break Snapshot chunks into small gRPC requests (#218)
Commit: | fa8bc8d | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Rename epoch -> term (#229) Using `term` as it's generally more suited to indicate different leader election periods (Stacked on #225, #226, #227 and #228) Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | ff6ad3d | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed AddEntries to Replicate (#228) (Stacked on top of #225, #226 and #227) Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | 66b388c | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed "index" to "offset" (#227) (Stacked on top of #225 & #226 ) Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | 275937f | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed ShardsAssignmentsResponse -> ShardsAssignments (#226) (stacked on top of #225) Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | f45f80d | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Renamed OxiaControl proto service to OxiaCoordination (#225) Renamed proto file `coordiationation.proto` -> `replication.proto` and the Service to `OxiaCoordination` Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | d2eabe2 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Adding license and license headers (#210) Added license, headers and tool to add and verify in CI. * `make license-check` * `make license-format`
Commit: | 47d1f73 | |
---|---|---|
Author: | Andras Beni | |
Committer: | GitHub |
Session Manager (#120) https://www.notion.so/streamnativeio/Design-for-session-management-b3be2beca3a941bf8c2313a0ddeaf8b3
Commit: | d02e952 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Leader sends snapshot to followers when needed (#176) The leader will send a snapshot to followers when either: * The follower is getting bootstrapped * The follower is tailing at an entry that was already trimmed in the leader wal (Stacked on top of #173) Co-authored-by: Dave Maughan <davidamaughan@gmail.com>
Commit: | a126733 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added client implementation of notifications (#166) Stacked on top of #164 & #165 Client API and implementation for notifications Co-authored-by: Andras Beni <andras.beni@streamnative.io> Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | 6ce5f5c | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
When the coordinator restarts, check leader status (#163) When the coordinator restarts, we need to double-check if the leader is up & running and in the expected state, otherwise, trigger a new leader election. Added a new `GetStatus()` RPC for the coordinator to get info about storage nodes.
Commit: | 30b546d | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Notification support in DB (#164) First part, added support in DB to handle the log of notifications. As described in https://www.notion.so/streamnativeio/Notifications-4f1a9c5e09da4346a05cf27f6cf0f3b0 Co-authored-by: Andras Beni <andras.beni@streamnative.io>
Commit: | 47e1041 | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Shard upperbound inclusive (#145)
Commit: | 4fff471 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Ensure entries timestamp are assigned only once (#139) We are currently assigning the timestamps on entries at the time when they get applied on the db layer. The problem is that this happens in each node (leader and followers) and the result is that the timestamp will change after a new leader election. We need a stable timestamp that is assigned only once in the leader and gets applied in all the followers. Added end-to-end test that verify the "stat" is the same after a new leader is elected.
Commit: | d227c72 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Fixed truncate (#141) Fixed the logic of truncate on 2 aspects: 1. We need to be able to truncate a follower after a restart, as long as it's on the same epoch 2. The leader needs to compare the head index of a late follower with its own head index "at the moment of the leader election" and it should never ask to truncate to an offset which is past the last offset of the follower
Commit: | dbb9b59 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Follower controller handling of snapshot (#132) * Follower controller handling of snapshot * Update server/internal_rpc_server.go Co-authored-by: Andras Beni <andras.beni@streamnative.io> Co-authored-by: Andras Beni <andras.beni@streamnative.io>
Commit: | daa2065 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Remove epoch from RPC responses (#123) * Coordinator tests * Fixed lint * Perform fencing in parallel * Fixed race conditions * Fixed lint * Fixed lint * Retry fencing failed followers * Fixed lint * Fixed race condition in test * Improved testing assertion * Fixed duplicated CLI options * Remove epoch from RPC responses * Fixes * Use individual response types * Fixed merge issue * fixed compile
Commit: | a60c7a9 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Retry fencing failed followers (#122) * Coordinator tests * Fixed lint * Perform fencing in parallel * Fixed race conditions * Fixed lint * Fixed lint * Retry fencing failed followers * Fixed lint * Fixed race condition in test * Improved testing assertion * Fixed duplicated CLI options
Commit: | d6c6db5 | |
---|---|---|
Author: | Elliot West | |
Committer: | GitHub |
[Improvement] GetRange → List (#109) * GetRange → List * GetRange → List Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | 1ca1e8c | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Improved logic for epoch checking in follower controller (#92)
Commit: | 96738a8 | |
---|---|---|
Author: | Andras Beni | |
Committer: | GitHub |
Assignment dispatcher (#62) * Assignment dispatcher * Almost tests * Roll back string replace * Revert mock refactoring * Fix standalone server's leader port * Add tests * Review comments * typo * Remove unused field
Commit: | 04e38f1 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Refactoring to use Offset instead of EntryId where possible (#74) When referring to a position in the log, it's not necessary to always carry the EntryId(Epoch, Offset) around. While the entry id is needed in Fence & Truncate calls, once we have a leader or follower, they can refer to positions with just the offset, playing from the commit index to head index. Modifications * For a given shards: * valid offsets are going from 0 to N * -1 the InvalidOffset * When the WAL is empty, the last offset is -1 * Tidwall/wal is based on that the first entry has index 1 -> Therefore we are translating from 0..N to 1..N+1. * In the long run it would probably make sense to fork the wal code inside our codebase and make some adjustments. eg: the idx starting at 0 and the serialization format (which we don't need since we already have one). * Changed the wal implementations to avoid tracking the wal readers, since it was not needed and was causing deadlocks given the different order of locks between the wal and the readers. * Refactoring to use Offset instead of EntryId where possible * Avoid atomic.Int64 type since it's only in Go 1.19 * Fixed typo
Commit: | 7e75fa1 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Refactor leader changes (#58) * Follower cursor implementation * Leader controller refactoring * Update server/follower_controller.go Co-authored-by: Andras Beni <andras.beni@streamnative.io> * Removed unused message * Fixed issue of sending fence requests to both leader and follower * Fixes after merge with main * Fixed test Co-authored-by: Andras Beni <andras.beni@streamnative.io> Co-authored-by: Dave Maughan <dave.maughan@streamnative.io>
Commit: | a480cd8 | |
---|---|---|
Author: | Andras Beni | |
Committer: | GitHub |
Remove reconfiguration from proto & go code (#51)
Commit: | 2044aa0 | |
---|---|---|
Author: | Elliot West | |
Committer: | GitHub |
[Doc] Comment typos (#53) * Fix typos * Typo * Note sort order * Typo^2
Commit: | 26e43db | |
---|---|---|
Author: | Elliot West | |
Committer: | GitHub |
Fix typos (#52)
Commit: | 2ce7db5 | |
---|---|---|
Author: | Elliot West | |
Committer: | GitHub |
[Improvement] Rename Status.BAD_VERSION (#49) * Rename Status.BAD_VERSION * Further instances
Commit: | 41448bd | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Client side shard management (#29) * Client side shard management * CR changes * lint Co-authored-by: Matteo Merli <mmerli@apache.org>
Commit: | 608ba66 | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
Split client batch to separate writes and reads (#33)
Commit: | 756330b | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Use shard-id field in all internal RPC requests (#27) * Use shard-id field in all internal RPC requests * Fixed writing stream response back * Fixed compile error
Commit: | 9441816 | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added option to have multiple hashing/sharding schemes (#22)
Commit: | 30cd432 | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
[Cleanup] Proto cleanup (#21)
Commit: | f237f0d | |
---|---|---|
Author: | Matteo Merli | |
Committer: | GitHub |
Added DB interface and impl (#19) * Indexed database batch * Added DB interface and impl * Merged with client proto changes and broke down into methods
Commit: | d09633f | |
---|---|---|
Author: | Dave Maughan | |
Committer: | GitHub |
[Feature] Client proto service (#20) * [Feature] Client proto service First cut of the client protobuf service for Milestone 1 * rename range requests and responses * Merge ShardAssignment and Shard
Commit: | 37dad58 | |
---|---|---|
Author: | Andras Beni | |
Committer: | GitHub |
Shard manager implementation (#15) * Shard manager implementation * Remove diff files Co-authored-by: Matteo Merli <mmerli@apache.org>
Commit: | 04eb38f | |
---|---|---|
Author: | Matteo Merli |
Linked basic put operation
Commit: | 71ec4ea | |
---|---|---|
Author: | Matteo Merli |
Added the logic to open/close leader and follower controllers
Commit: | ad5ecd3 | |
---|---|---|
Author: | Matteo Merli |
Initial import