Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust quorum intersection checker integration #4629

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jayz22
Copy link
Contributor

@jayz22 jayz22 commented Jan 25, 2025

Description

This is the implementation of a new quorum intersection checker that leverages a SAT-solver. It contains

  • The bridge implementation for stellar/stellar-quorum-analyzer, the underneath Rust library.
  • A new adaptor class RustQuorumCheckerAdaptor that wraps the Rust calls in C++ that provides some basic metrics.
  • Async interruption handling
  • A new config flag USE_QUORUM_INTERSECTION_CHECKER_V2 to toggle between old and new solver.
  • Update all existing test cases to pass with the new solver.

Rust side: stellar/stellar-quorum-analyzer#1

Preliminary benchmark results look very good. This is run with the stellar-core check-quorum-intersection command line locally, sample test cases can be found here. A 16-org configuration which previously won't finish, now takes only fraction of a second.

no. of orgs / nodes old solve time(s) new solve time(s)
10 (30) 1.59 0.05
12 (36) 40.09 0.01
13 (39) 5166.47 0.03
14 (42) 6469.11 0.03
16 (48) n/a 0.12

Marking draft for now since it needs to be merged after the Rust side PR (and update the commit hash in cargo.toml). However, this it is now ready for review.

Checklist

  • Reviewed the contributing document
  • Rebased on top of master (no merge commits)
  • Ran clang-format v8.0.0 (via make format or the Visual Studio extension)
  • Compiles
  • Ran all tests
  • If change impacts performance, include supporting evidence per the performance document

@jayz22 jayz22 force-pushed the qic branch 4 times, most recently from a72ac5f to b5a56d8 Compare February 1, 2025 01:56
- Rust bridge and wrapper for `FbasAnalyzer` (stellar/stellar-quorum-analyzer)
- A new adaptor class `RustQuorumCheckerAdaptor` that wraps the Rust calls
- Async interruption handling
- A new config flag `USE_QUORUM_INTERSECTION_CHECKER_V2` to toggle between old and new solver
- Update all tests
- Add static counters for invocation metrics
@jayz22 jayz22 changed the title (WIP do not merge) Rust quorum intersection checker integration Rust quorum intersection checker integration Feb 1, 2025
@jayz22 jayz22 requested a review from graydon February 1, 2025 02:20
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