Skip to content

Conversation

@knst
Copy link
Collaborator

@knst knst commented Nov 26, 2024

This PR has important fixes to implement "single-node quorum" feature.

Issue being fixed or feature implemented

Without IS-quorum you can not dynamically add a new MN or Evo node.
For evo nodes adding it dynamically is the only way.

What was done?

Fixed a function that dynamically adds a masternode without Instant Send quorums; use it in a functional test feature_asset_locks.py

As side effect it improves performance of functional tests which do not wait more IS lock significantly; for feature_asset_locks.py it gave ~20 seconds per run.

How Has This Been Tested?

See updates in feature_asset_locks.py, feature_llmq_evo.py, feature_dip3_v19.py

Breaking Changes

N/A

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

@knst knst added this to the 22.1 milestone Nov 26, 2024
Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 37fbdee

@knst knst mentioned this pull request Nov 28, 2024
5 tasks
Copy link
Member

@PastaPastaPasta PastaPastaPasta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 37fbdee

Although I would say I'd prefer this to be scope "test" or something similar, as it's hard to call these changes a feat

@PastaPastaPasta PastaPastaPasta merged commit f6edb8a into dashpay:develop Dec 2, 2024
22 checks passed
@knst knst deleted the feat-improve-dynamically_prepare_masternode branch December 2, 2024 06:41
knst added a commit to knst/dash that referenced this pull request Aug 22, 2025
knst added a commit to knst/dash that referenced this pull request Aug 28, 2025
…pay#6430

Reduced amount of mn from 4 to just 3 as no needs for rotation quorum anymore
Removed IS spork changes
knst added a commit to knst/dash that referenced this pull request Aug 29, 2025
…pay#6430

Reduced amount of mn from 4 to just 3 as no needs for rotation quorum anymore
Removed IS spork changes
knst added a commit to knst/dash that referenced this pull request Aug 29, 2025
…pay#6430

Reduced amount of mn from 4 to just 3 as no needs for rotation quorum anymore
Removed IS spork changes
PastaPastaPasta added a commit that referenced this pull request Sep 23, 2025
…llmq_{evo,rotation,chainlocks.py}

2024c65 test: refactor sleep_time as a param (Konstantin Akimov)
2903c11 test: reduce overhead in feature_llmq_evo.py: only 2 regular nodes, only 4 evo nodes, less blocks generated (Konstantin Akimov)
af768e4 test: functional tests for RPC masternodelist if mode="evo" (Konstantin Akimov)
9c6c3b9 test: simplify feature_llmq_evo.py - drop IS support to followup #6430 (Konstantin Akimov)
e42e4bf test: use self.mn_rr instead user provided param in activate_mn_rr (Konstantin Akimov)
3f3a272 test: generate less blocks in llmq_rotation.py (Konstantin Akimov)
db09299 refactor: simplify feature_llmq_rotation.py by excluding llmq=102 (v17 activated) (Konstantin Akimov)
6b9c9af test: remove debug logs with quorum info from helper mine_cycle_quorum (Konstantin Akimov)
0f6cf13 refactor: wait 5seconds only once but not for each node in feature_llmq_chainlocks.py (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  These functional tests are one of the slowest to run with tsan on CI:

      feature_llmq_chainlocks.py                             | ✓ Passed  | 301 s
      feature_llmq_evo.py                                    | ✓ Passed  | 198 s
      feature_llmq_rotation.py                               | ✓ Passed  | 315 s

  ## What was done?

  ### feature_llmq_chainlocks.py
  It waits only once for all nodes to check missing chainlock; instead of waiting 5 second for each node. Used to be: wait->check->wait->check... Become: wait->check->check->check...

  ### feature_llmq_evo.py
   - improve testing of RPC `masternodelist` by checking results of `mode=evo`
   - removed leftover code to enable & disable IS by spork to follow-up #6430
   - reduced amount of evo nodes (5->4) and masternodes (4 -> 2) as follow-up to #6430 as no more rotation quorum is needed
   - generate less blocks to activate mn_rr (400 -> 320)

  ### feature_llmq_rotation.py
   - fixed instability by disabling v17-activated quorum (type 102) which forbids to activate mn_rr on earlier height than 900
   - activate mn_rr on height 300 to finish #6667 (which has not been possible before due to v17-activated quorum)

  ### test_framework
  Minor improvements and refactorings:
   - simplified `activate_mn_rr`
   - simplified `wait_for_chainlocked_block_all_nodes` by removing flag `expected`
   - disabled excessive logging in mine_cycle_quorum

  ## How Has This Been Tested?
  Run functional tests locally multiple times. Median time is improved:
   - `feature_llmq_chainlocks.py`: 120s -> 75s (localhost), 301s -> 105s (CI)
   - `feature_llmq_evo.py`: 108s -> 74s (localhost), 198s -> 118s (CI)
   - `feature_llmq_rotation.py`: 154s -> 93s (localhost), 315s -> 141s (CI)

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    utACK 2024c65

Tree-SHA512: 42bada5e86824b24cc5159fc4b9c897aa968c86393364e03c873ff0276cd7c15cde729838782d2a2ffb68682afe6da66117bd619b4326721f3c1609553bcdb30
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.

3 participants