mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Adjust the aggressiveness of the ledger acquisition engine:
Several hard-coded parameters control the behavior of the ledger
acquisition engine. The values of many of these parameters where
set by intuition and have complex and non-intuitive interactions
with each other and other parts of the code.
An earlier commit attempted to adjust several of these parameters
to improve syncing performance; initial testing was promising but
a number of operators reported experiencing syncing and stability
issues with their servers. As a result, this commit reverts parts
of commit 18235067af.
This commit further adjusts some tunables so as to increase the
aggressiveness of the ledger acquisition engine.
This commit is contained in:
@@ -44,27 +44,27 @@ using namespace std::chrono_literals;
|
||||
|
||||
enum {
|
||||
// Number of peers to start with
|
||||
peerCountStart = 4
|
||||
peerCountStart = 5
|
||||
|
||||
// Number of peers to add on a timeout
|
||||
,
|
||||
peerCountAdd = 2
|
||||
peerCountAdd = 3
|
||||
|
||||
// how many timeouts before we give up
|
||||
,
|
||||
ledgerTimeoutRetriesMax = 10
|
||||
ledgerTimeoutRetriesMax = 6
|
||||
|
||||
// how many timeouts before we get aggressive
|
||||
,
|
||||
ledgerBecomeAggressiveThreshold = 6
|
||||
ledgerBecomeAggressiveThreshold = 4
|
||||
|
||||
// Number of nodes to find initially
|
||||
,
|
||||
missingNodesFind = 512
|
||||
missingNodesFind = 256
|
||||
|
||||
// Number of nodes to request for a reply
|
||||
,
|
||||
reqNodesReply = 256
|
||||
reqNodesReply = 128
|
||||
|
||||
// Number of nodes to request blindly
|
||||
,
|
||||
@@ -72,7 +72,7 @@ enum {
|
||||
};
|
||||
|
||||
// millisecond for each ledger timeout
|
||||
auto constexpr ledgerAcquireTimeout = 2500ms;
|
||||
auto constexpr ledgerAcquireTimeout = 3000ms;
|
||||
|
||||
InboundLedger::InboundLedger(
|
||||
Application& app,
|
||||
@@ -664,15 +664,15 @@ InboundLedger::trigger(std::shared_ptr<Peer> const& peer, TriggerReason reason)
|
||||
if (reason != TriggerReason::reply)
|
||||
{
|
||||
// If we're querying blind, don't query deep
|
||||
tmGL.set_querydepth(1);
|
||||
tmGL.set_querydepth(0);
|
||||
}
|
||||
else if (peer && peer->isHighLatency())
|
||||
{
|
||||
// If the peer has high latency, query extra deep
|
||||
tmGL.set_querydepth(3);
|
||||
tmGL.set_querydepth(2);
|
||||
}
|
||||
else
|
||||
tmGL.set_querydepth(2);
|
||||
tmGL.set_querydepth(1);
|
||||
|
||||
// Get the state data first because it's the most likely to be useful
|
||||
// if we wind up abandoning this fetch.
|
||||
|
||||
Reference in New Issue
Block a user