Use quorum specified via command line: (#4489)

If `--quorum` setting is present on the command line, use the specified
value as the minimum quorum. This allows for the use of a potentially
fork-unsafe quorum, but it is sometimes necessary for small and test
networks.

Fix #4488.

---------

Co-authored-by: RichardAH <richard.holland@starstone.co.nz>
This commit is contained in:
Mark Travis
2023-04-20 11:36:18 -07:00
committed by GitHub
parent 1f417764c3
commit c5003969de
2 changed files with 15 additions and 18 deletions

View File

@@ -1318,7 +1318,7 @@ private:
BEAST_EXPECT(changes.added == expectedTrusted);
BEAST_EXPECT(trustedKeys->quorum() == minQuorum);
// Use normal quorum when seen validators >= quorum
// Use configured quorum even when seen validators >= quorum
activeValidators.emplace(toBeSeen);
changes = trustedKeys->updateTrusted(
activeValidators,
@@ -1328,7 +1328,7 @@ private:
env.app().getHashRouter());
BEAST_EXPECT(changes.removed.empty());
BEAST_EXPECT(changes.added.empty());
BEAST_EXPECT(trustedKeys->quorum() == std::ceil(n * 0.8f));
BEAST_EXPECT(trustedKeys->quorum() == minQuorum);
}
{
// Remove expired published list
@@ -1828,7 +1828,8 @@ private:
env.app().getOPs(),
env.app().overlay(),
env.app().getHashRouter());
if (trustedKeys->quorum() == std::ceil(cfgKeys.size() * 0.8f))
if (minimumQuorum == trustedKeys->quorum() ||
trustedKeys->quorum() == std::ceil(cfgKeys.size() * 0.8f))
return trustedKeys;
}
return nullptr;
@@ -1980,7 +1981,7 @@ private:
env.app().getOPs(),
env.app().overlay(),
env.app().getHashRouter());
BEAST_EXPECT(validators->quorum() == 48);
BEAST_EXPECT(validators->quorum() == 30);
hash_set<PublicKey> nUnl;
it = unl.begin();
for (std::uint32_t i = 0; i < 20; ++i)