Skip to content

Commit 0bbc3a5

Browse files
Merge #7105: refactor: drop dependency of CGovernanceManager on CNetFulfilledRequestManager
295567f refactor: drop dependency of CGovernanceManager on CNetFulfilledRequestManager (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented `CGovernanceManager` should not be directly aware of network stuff. ## What was done? Moved usages of `CNetFulfilledRequestManager` from CGovernanceManager to NetGovernance where it belongs to, to follow-up #7008 ## How Has This Been Tested? Run unit & functional tests. ## 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: kwvg: utACK 295567f UdjinM6: utACK 295567f Tree-SHA512: a5b6016064676d59dd94d08eac9880047ede0e87624edb6ebc08686436818b97d696ee4a724063325171dec73cd743bd1e9f40eb3f10b957acdac89a6c720269
2 parents 33c51b1 + 295567f commit 0bbc3a5

File tree

6 files changed

+19
-20
lines changed

6 files changed

+19
-20
lines changed

src/governance/governance.cpp

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include <governance/validators.h>
1616
#include <masternode/meta.h>
1717
#include <masternode/sync.h>
18-
#include <netfulfilledman.h>
1918
#include <netmessagemaker.h>
2019
#include <protocol.h>
2120
#include <shutdown.h>
@@ -63,12 +62,11 @@ GovernanceStore::GovernanceStore() :
6362
{
6463
}
6564

66-
CGovernanceManager::CGovernanceManager(CMasternodeMetaMan& mn_metaman, CNetFulfilledRequestManager& netfulfilledman,
65+
CGovernanceManager::CGovernanceManager(CMasternodeMetaMan& mn_metaman,
6766
const ChainstateManager& chainman,
6867
const std::unique_ptr<CDeterministicMNManager>& dmnman, CMasternodeSync& mn_sync) :
6968
m_db{std::make_unique<db_type>("governance.dat", "magicGovernanceCache")},
7069
m_mn_metaman{mn_metaman},
71-
m_netfulfilledman{netfulfilledman},
7270
m_chainman{chainman},
7371
m_dmnman{dmnman},
7472
m_mn_sync{mn_sync},
@@ -649,18 +647,9 @@ MessageProcessingResult CGovernanceManager::SyncSingleObjVotes(CNode& peer, cons
649647
MessageProcessingResult CGovernanceManager::SyncObjects(CNode& peer, CConnman& connman) const
650648
{
651649
LOCK(cs_store);
652-
assert(m_netfulfilledman.IsValid());
653-
654650
// do not provide any data until our node is synced
655651
if (!m_mn_sync.IsSynced()) return {};
656652

657-
if (m_netfulfilledman.HasFulfilledRequest(peer.addr, NetMsgType::MNGOVERNANCESYNC)) {
658-
// Asking for the whole list multiple times in a short period of time is no good
659-
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- peer already asked me for the list\n", __func__);
660-
return MisbehavingError{20};
661-
}
662-
m_netfulfilledman.AddFulfilledRequest(peer.addr, NetMsgType::MNGOVERNANCESYNC);
663-
664653
// SYNC GOVERNANCE OBJECTS WITH OTHER CLIENT
665654

666655
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- syncing all objects to peer=%d\n", __func__, peer.GetId());

src/governance/governance.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class CGovernanceObject;
4141
class CGovernanceVote;
4242
class CMasternodeMetaMan;
4343
class CMasternodeSync;
44-
class CNetFulfilledRequestManager;
4544
class CSporkManager;
4645
class CSuperblock;
4746

@@ -252,7 +251,6 @@ class CGovernanceManager : public GovernanceStore, public GovernanceSignerParent
252251
bool is_valid{false};
253252

254253
CMasternodeMetaMan& m_mn_metaman;
255-
CNetFulfilledRequestManager& m_netfulfilledman;
256254
const ChainstateManager& m_chainman;
257255
const std::unique_ptr<CDeterministicMNManager>& m_dmnman;
258256
CMasternodeSync& m_mn_sync;
@@ -274,7 +272,7 @@ class CGovernanceManager : public GovernanceStore, public GovernanceSignerParent
274272
CGovernanceManager() = delete;
275273
CGovernanceManager(const CGovernanceManager&) = delete;
276274
CGovernanceManager& operator=(const CGovernanceManager&) = delete;
277-
explicit CGovernanceManager(CMasternodeMetaMan& mn_metaman, CNetFulfilledRequestManager& netfulfilledman,
275+
explicit CGovernanceManager(CMasternodeMetaMan& mn_metaman,
278276
const ChainstateManager& chainman,
279277
const std::unique_ptr<CDeterministicMNManager>& dmnman, CMasternodeSync& mn_sync);
280278
~CGovernanceManager();

src/governance/net_governance.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <logging.h>
1111
#include <masternode/sync.h>
1212
#include <net.h>
13+
#include <netfulfilledman.h>
1314
#include <scheduler.h>
1415

1516
class CConnman;
@@ -61,7 +62,15 @@ void NetGovernance::ProcessMessage(CNode& peer, const std::string& msg_type, CDa
6162

6263
LogPrint(BCLog::GOBJECT, "MNGOVERNANCESYNC -- syncing governance objects to our peer %s\n", peer.GetLogString());
6364
if (nProp == uint256()) {
64-
m_peer_manager->PeerPostProcessMessage(m_gov_manager.SyncObjects(peer, m_connman));
65+
assert(m_netfulfilledman.IsValid());
66+
if (!m_netfulfilledman.HasFulfilledRequest(peer.addr, NetMsgType::MNGOVERNANCESYNC)) {
67+
m_netfulfilledman.AddFulfilledRequest(peer.addr, NetMsgType::MNGOVERNANCESYNC);
68+
m_peer_manager->PeerPostProcessMessage(m_gov_manager.SyncObjects(peer, m_connman));
69+
} else {
70+
// Asking for the whole list multiple times in a short period of time is no good
71+
LogPrint(BCLog::GOBJECT, "MNGOVERNANCESYNC -- peer already asked me for the list\n");
72+
m_peer_manager->PeerMisbehaving(peer.GetId(), 20);
73+
}
6574
} else {
6675
m_peer_manager->PeerPostProcessMessage(m_gov_manager.SyncSingleObjVotes(peer, nProp, filter, m_connman));
6776
}

src/governance/net_governance.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,17 @@
99

1010
class CGovernanceManager;
1111
class CMasternodeSync;
12+
class CNetFulfilledRequestManager;
1213

1314
class NetGovernance final : public NetHandler
1415
{
1516
public:
16-
NetGovernance(PeerManagerInternal* peer_manager, CGovernanceManager& gov_manager, CMasternodeSync& node_sync,
17+
NetGovernance(PeerManagerInternal* peer_manager, CGovernanceManager& gov_manager, CMasternodeSync& node_sync, CNetFulfilledRequestManager& netfulfilledman,
1718
CConnman& connman) :
1819
NetHandler(peer_manager),
1920
m_gov_manager(gov_manager),
2021
m_node_sync(node_sync),
22+
m_netfulfilledman(netfulfilledman),
2123
m_connman(connman)
2224
{
2325
}
@@ -28,6 +30,7 @@ class NetGovernance final : public NetHandler
2830
private:
2931
CGovernanceManager& m_gov_manager;
3032
CMasternodeSync& m_node_sync;
33+
CNetFulfilledRequestManager& m_netfulfilledman;
3134
CConnman& m_connman;
3235
};
3336

src/init.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,7 +1983,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
19831983
*/
19841984
node.mn_sync = std::make_unique<CMasternodeSync>(std::make_unique<NodeSyncNotifierImpl>(*node.connman, *node.netfulfilledman));
19851985

1986-
node.govman = std::make_unique<CGovernanceManager>(*node.mn_metaman, *node.netfulfilledman, *node.chainman, node.dmnman, *node.mn_sync);
1986+
node.govman = std::make_unique<CGovernanceManager>(*node.mn_metaman, *node.chainman, node.dmnman, *node.mn_sync);
19871987

19881988
const bool fReset = fReindex;
19891989
bilingual_str strLoadError;
@@ -2259,7 +2259,7 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
22592259
}
22602260
return InitError(strprintf(_("Failed to clear governance cache at %s"), file_path));
22612261
}
2262-
node.peerman->AddExtraHandler(std::make_unique<NetGovernance>(node.peerman.get(), *node.govman, *node.mn_sync, *node.connman));
2262+
node.peerman->AddExtraHandler(std::make_unique<NetGovernance>(node.peerman.get(), *node.govman, *node.mn_sync, *node.netfulfilledman, *node.connman));
22632263
}
22642264
node.peerman->AddExtraHandler(std::make_unique<SyncManager>(node.peerman.get(), *node.govman, *node.mn_sync, *node.connman, *node.netfulfilledman));
22652265

src/test/util/setup_common.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ ChainTestingSetup::ChainTestingSetup(const std::string& chainName, const std::ve
286286

287287
m_node.mnhf_manager = std::make_unique<CMNHFManager>(*m_node.evodb, *m_node.chainman);
288288
m_node.mn_sync = std::make_unique<CMasternodeSync>(std::make_unique<NodeSyncNotifierImpl>(*m_node.connman, *m_node.netfulfilledman));
289-
m_node.govman = std::make_unique<CGovernanceManager>(*m_node.mn_metaman, *m_node.netfulfilledman, *m_node.chainman, m_node.dmnman, *m_node.mn_sync);
289+
m_node.govman = std::make_unique<CGovernanceManager>(*m_node.mn_metaman, *m_node.chainman, m_node.dmnman, *m_node.mn_sync);
290290

291291
// Start script-checking threads. Set g_parallel_script_checks to true so they are used.
292292
constexpr int script_check_threads = 2;

0 commit comments

Comments
 (0)