Skip to content

Release v0.7.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 26 Aug 11:11
d19df09

⭐ New Features

  • [Feature]CURP WAL (Write-Ahead-Log) implementation:We designed a Write-Ahead-Log to persist log entries for curp.
  • [Feature]Deduplication:Implements command deduplication using the exactly-once semantics from the RIFL paper.
  • [Feature]: Snapshot Restore #630](#630)
  • [Feature]: Interface of maintenance server #543
  • [Feature]: Support run with tls [#328](#328)

🛠️ Refactor

  • [Refactor]: Add a session structure to renew lock lease automatically #684
  • [Refactor]: startup process #629
  • [Refactor]: Refactor the GC of speculative pool #439
  • [Refactor]:New command execution logic: We removed the cmd workers and related command execution logic. Now Xline will use serial execution (with batch) to prevent lock contention.
  • [Refactor]: Garbage Collection: We refactored the garbage collection logic based on the dedup implementation.
  • [Refactor]:Client Propose Optimization: We refactored the curp client to use gRPC stream to send a propose to the cluster. This reduces the load of the gRPC server and improves the overall performance.
  • [Refactor]: Conflict Detection: We removed the conflict checked mpmc. Now Xline will use the conflict pools (speculative pool and uncommitted pool) to detect command conflicts.
  • [Refactor]: Read Index: We implemented the Read Index mechanism from the Raft paper for read-only commands. Replacing the previous Read State implementation.
  • [Refactor]: xline-client Refactor: We switched to a more intuitive user interface for the xline-client crate.
  • [Refactor]: Various performance optimizations

🪲 Bug Fixes

  • [Bug]: Implement ReadIndex #870
  • [etcdapi] [Bug]: Repeated revision #848
  • [Bug]: The test case curp::it server::shutdown_rpc_should_shutdown_the_cluster failed #774
  • [Bug]: Xline will loss event when using watch feature #677
  • [Bug]: The xlinectl won't renew the lease of the lock key #664
  • [Bug]: Failed to add a new member node4 to a three-nodes xline cluster #661
  • [Refactor]: read-only command during revision generation #502
  • [Bug]: Read different values in execute during read state #501
  • [Bug]: sync txn request does not execute in the order of child request #498
  • [Bug]: Read State #497
  • [Bug]: revision generation #491, #848
  • [Bug]: requests in a single txn do not execute in sequence #471
  • [Bug]: batch_index in raw_curp will overflow eventually #368
  • [Bug]: Fix GC may break the CURP durability #159

✍️ Known Issues

During benchmark if the cluster is under high load, the cluster may sometimes not be able to make progress due to deduplication mechanism.

💥 Breaking Changes

  • etcd compative APIs will now use 2-RTTs operations to prevent revision generation issues.

❤️ Contributors

We'd like to thank all the contributors who worked on this release!