@@ -2074,32 +2074,58 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler)
20742074
20752075 // LOAD SERIALIZED DAT FILES INTO DATA CACHES FOR INTERNAL USE
20762076
2077- bool fIgnoreCacheFiles = fLiteMode || fReindex || fReindexChainState ;
2078- if (!fIgnoreCacheFiles ) {
2079- fs::path pathDB = GetDataDir ();
2080- std::string strDBName;
2081-
2082- strDBName = " mncache.dat" ;
2083- uiInterface.InitMessage (_ (" Loading masternode cache..." ));
2084- CFlatDB<CMasternodeMetaMan> flatdb1 (strDBName, " magicMasternodeCache" );
2077+ bool fLoadCacheFiles = !(fLiteMode || fReindex || fReindexChainState );
2078+ {
2079+ LOCK (cs_main);
2080+ // was blocks/chainstate deleted?
2081+ if (chainActive.Tip () == nullptr ) {
2082+ fLoadCacheFiles = false ;
2083+ }
2084+ }
2085+ fs::path pathDB = GetDataDir ();
2086+ std::string strDBName;
2087+
2088+ strDBName = " mncache.dat" ;
2089+ uiInterface.InitMessage (_ (" Loading masternode cache..." ));
2090+ CFlatDB<CMasternodeMetaMan> flatdb1 (strDBName, " magicMasternodeCache" );
2091+ if (fLoadCacheFiles ) {
20852092 if (!flatdb1.Load (mmetaman)) {
20862093 return InitError (_ (" Failed to load masternode cache from" ) + " \n " + (pathDB / strDBName).string ());
20872094 }
2095+ } else {
2096+ CMasternodeMetaMan mmetamanTmp;
2097+ if (!flatdb1.Dump (mmetamanTmp)) {
2098+ return InitError (_ (" Failed to clear masternode cache at" ) + " \n " + (pathDB / strDBName).string ());
2099+ }
2100+ }
20882101
2089- strDBName = " governance.dat" ;
2090- uiInterface.InitMessage (_ (" Loading governance cache..." ));
2091- CFlatDB<CGovernanceManager> flatdb3 (strDBName, " magicGovernanceCache" );
2102+ strDBName = " governance.dat" ;
2103+ uiInterface.InitMessage (_ (" Loading governance cache..." ));
2104+ CFlatDB<CGovernanceManager> flatdb3 (strDBName, " magicGovernanceCache" );
2105+ if (fLoadCacheFiles ) {
20922106 if (!flatdb3.Load (governance)) {
20932107 return InitError (_ (" Failed to load governance cache from" ) + " \n " + (pathDB / strDBName).string ());
20942108 }
20952109 governance.InitOnLoad ();
2110+ } else {
2111+ CGovernanceManager governanceTmp;
2112+ if (!flatdb3.Dump (governanceTmp)) {
2113+ return InitError (_ (" Failed to clear governance cache at" ) + " \n " + (pathDB / strDBName).string ());
2114+ }
2115+ }
20962116
2097- strDBName = " netfulfilled.dat" ;
2098- uiInterface.InitMessage (_ (" Loading fulfilled requests cache..." ));
2099- CFlatDB<CNetFulfilledRequestManager> flatdb4 (strDBName, " magicFulfilledCache" );
2117+ strDBName = " netfulfilled.dat" ;
2118+ uiInterface.InitMessage (_ (" Loading fulfilled requests cache..." ));
2119+ CFlatDB<CNetFulfilledRequestManager> flatdb4 (strDBName, " magicFulfilledCache" );
2120+ if (fLoadCacheFiles ) {
21002121 if (!flatdb4.Load (netfulfilledman)) {
21012122 return InitError (_ (" Failed to load fulfilled requests cache from" ) + " \n " + (pathDB / strDBName).string ());
21022123 }
2124+ } else {
2125+ CNetFulfilledRequestManager netfulfilledmanTmp;
2126+ if (!flatdb4.Dump (netfulfilledmanTmp)) {
2127+ return InitError (_ (" Failed to clear fulfilled requests cache at" ) + " \n " + (pathDB / strDBName).string ());
2128+ }
21032129 }
21042130
21052131 // ********************************************************* Step 10c: schedule Dash-specific tasks
0 commit comments