Skip to content

Improvement on Index handling and propogation on cluster - #114

Merged
tislib merged 20 commits into
masterfrom
feature/ledger-index-watcher
Jun 29, 2026
Merged

tislib merged 20 commits into
masterfrom
feature/ledger-index-watcher

Conversation

@tislib

@tislib tislib commented Jun 29, 2026

Copy link
Copy Markdown
Owner

No description provided.

tislib added 20 commits June 28, 2026 09:02
…rent_deposit_load`, introduce `load_peak`, and refactor test catalogue.
…g, update load scenarios, and reduce replication poll latency.
…eplication and Waiters

- Introduced a single, non-blocking index hook for reactive replication and waiters.
- Replaced polling mechanisms with notifier-driven index propagation for reduced latency.
- Enhanced cluster replication and transaction wait paths with event-driven signaling.
- Updated ADR documentation and added entry to ADR README.
- Introduced `IndexHook` for lock-free, reactive progress tracking of pipeline indices (Compute, Commit, Snapshot).
- Added `set_index_hook` and `fire_index_hook` for stage notifications of index changes, enabling event-driven flows.
- Updated `load` and `load_latency` binaries to demonstrate hook usage for mirroring indices in real-time.
- Extended `Pipeline` and `Ledger` APIs for hook registration and propagation.
- Replaced polling mechanisms within `Waiter` with `IndexWatch` for reactive transaction-level waits.
- Added granular index hooks in `LedgerSlot` for propagating ledger index updates to `Waiter` in real-time.
- Incorporated `IndexWatch` for reactive waiting on `Compute`, `Commit`, and `Snapshot` indices.
- Enhanced `ClusterNode` to integrate and manage reactive index propagation for single-node clusters.
- Added in-process latency benchmarking tools (`cluster_load_latency`) to measure performance improvements.
…ive waiters from hanging

- Ensure an index hook is registered before reseeding; return an error if missing.
- Simplify hook re-application logic for rebuilt ledgers.
…nd Raft heartbeats

- Replaced `replication_poll_ms` with reactive index propagation, eliminating 5 ms idle polling delays.
- Integrated Raft heartbeats for safety and freshness, driven by `heartbeat_interval` instead of configurable delays.
- Updated documentation and ADR-027 to reflect the removal of idle polling and the refinement of replication behavior.
- Eliminated unused `replication_poll_ms` setting from node configuration files (`node1.toml`, `node2.toml`, `node3.toml`).
- Reflects the shift to reactive replication propagation and Raft heartbeats.
- Exposed `heartbeat_interval` from `Node` configuration for use in replication drivers.
- Ensures heartbeat cadence aligns with election timeout constraints for safety and liveness.
…tion ID in WAL buffers

- Introduced `last_tx_id_in` to efficiently iterate WAL records and extract the last transaction ID (`tx_id`) from metadata records.
- Updated exports in `lib.rs` to include `last_tx_id_in`.
- Reflects transition to Raft-driven heartbeats for replication cadence.
- Eliminated unused `replication_poll_ms` references across process logic, tests, and configuration files.
- Reflects the shift to reactive replication and Raft-driven heartbeats for replication cadence.
- Introduced `cluster_commit` as a reactive index in `Waiter`, propagated via Raft advances.
- Replaced polling with `IndexWatch` for all transaction wait levels (Compute, Commit, Snapshot, ClusterCommit).
- Simplified `Waiter::new` initialization process, removing `LedgerSlot` and `Consensus` dependencies.
- Updated `wait_for_transaction_level` to use reactive `IndexWatch` for `ClusterCommit`.
- Simplified `Waiter` initialization with ledger seeded indices.
- Shared `Waiter` into `Consensus` for unified reactive watches.
- Removed unused `replication_poll_ms` and references across configuration, tests, and docs.
- Improved cluster commit driver to ensure reactive index propagation.
- Added `Waiter` to `Consensus` for unified reactive index management.
- Replaced polling-based mechanisms with Raft-driven heartbeats and reactive propagation.
- Removed `replication_poll_ms` references across codebase, tests, and configuration.
- Updated replication drivers for more efficient and accurate acknowledgment of index updates.
- Eliminated `replication_poll_ms` references across proto mappers, types, simulator mocks, and UI components.
- Reflects full migration to Raft-driven heartbeats and reactive propagation.
- Removed the `testing` crate and its dependencies across the workspace.
- Merged `scenario` primitives and `scenarios` catalogue into `control` as lightweight modules.
- Updated `control` service, runner, and metrics to reference the new unified structure.
- Refactored latency probes to improve sampling clarity (`ProbeSample`) and enhance server-measured latency reporting.
@tislib
tislib merged commit e14b146 into master Jun 29, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant