Improve sync (#1779)

* Do not relay `mnp`, `mnb`, `mnw`, `govobj` and `govobjvote` until fully synced

This should massively lower outgoing traffic and load during sync process (especially on mainnet)

* Apply "no sync from me until I'm synced" rule to all nodes
This commit is contained in:
UdjinM6 2017-12-14 03:33:58 +03:00 committed by GitHub
parent a79c972486
commit 63e3061487
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 33 additions and 3 deletions

View File

@ -8,6 +8,7 @@
#include "governance-object.h"
#include "governance-vote.h"
#include "instantx.h"
#include "masternode-sync.h"
#include "masternodeman.h"
#include "messagesigner.h"
#include "util.h"
@ -651,6 +652,12 @@ bool CGovernanceObject::GetCurrentMNVotes(const COutPoint& mnCollateralOutpoint,
void CGovernanceObject::Relay(CConnman& connman)
{
// Do not relay until fully synced
if(!masternodeSync.IsSynced()) {
LogPrint("gobject", "CGovernanceObject::Relay -- won't relay until fully synced\n");
return;
}
CInv inv(MSG_GOVERNANCE_OBJECT, GetHash());
connman.RelayInv(inv, MIN_GOVERNANCE_PEER_PROTO_VERSION);
}

View File

@ -4,6 +4,7 @@
#include "governance-vote.h"
#include "governance-object.h"
#include "masternode-sync.h"
#include "masternodeman.h"
#include "messagesigner.h"
#include "util.h"
@ -226,6 +227,12 @@ CGovernanceVote::CGovernanceVote(COutPoint outpointMasternodeIn, uint256 nParent
void CGovernanceVote::Relay(CConnman& connman) const
{
// Do not relay until fully synced
if(!masternodeSync.IsSynced()) {
LogPrint("gobject", "CGovernanceVote::Relay -- won't relay until fully synced\n");
return;
}
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, GetHash());
connman.RelayInv(inv, MIN_GOVERNANCE_PEER_PROTO_VERSION);
}

View File

@ -740,7 +740,7 @@ void CGovernanceManager::Sync(CNode* pfrom, const uint256& nProp, const CBloomFi
*/
// do not provide any data until our node is synced
if(fMasterNode && !masternodeSync.IsSynced()) return;
if(!masternodeSync.IsSynced()) return;
int nObjCount = 0;
int nVoteCount = 0;

View File

@ -840,8 +840,12 @@ void CMasternodePayments::CheckPreviousBlockVotes(int nPrevBlockHeight)
void CMasternodePaymentVote::Relay(CConnman& connman)
{
// do not relay until synced
if (!masternodeSync.IsWinnersListSynced()) return;
// Do not relay until fully synced
if(!masternodeSync.IsSynced()) {
LogPrint("mnpayments", "CMasternodePayments::Relay -- won't relay until fully synced\n");
return;
}
CInv inv(MSG_MASTERNODE_PAYMENT_VOTE, GetHash());
connman.RelayInv(inv);
}

View File

@ -654,6 +654,12 @@ bool CMasternodeBroadcast::CheckSignature(int& nDos)
void CMasternodeBroadcast::Relay(CConnman& connman)
{
// Do not relay until fully synced
if(!masternodeSync.IsSynced()) {
LogPrint("masternode", "CMasternodeBroadcast::Relay -- won't relay until fully synced\n");
return;
}
CInv inv(MSG_MASTERNODE_ANNOUNCE, GetHash());
connman.RelayInv(inv);
}
@ -813,6 +819,12 @@ bool CMasternodePing::CheckAndUpdate(CMasternode* pmn, bool fFromNewBroadcast, i
void CMasternodePing::Relay(CConnman& connman)
{
// Do not relay until fully synced
if(!masternodeSync.IsSynced()) {
LogPrint("masternode", "CMasternodePing::Relay -- won't relay until fully synced\n");
return;
}
CInv inv(MSG_MASTERNODE_PING, GetHash());
connman.RelayInv(inv);
}