diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index fcafae0cb3..65ee67dad3 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -147,11 +147,14 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger) std::map< uint32, std::pair > ledgerHashes; + uint32 minHas = ledger->getLedgerSeq(); + uint32 maxHas = ledger->getLedgerSeq(); + while (seq > 0) { { boost::recursive_mutex::scoped_lock ml(mLock); - mCompleteLedgers.setValue(seq); + minHas = seq; --seq; if (mCompleteLedgers.hasValue(seq)) break; @@ -162,6 +165,8 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger) { if (theApp->isShutdown()) return; + mCompleteLedgers.setRange(minHas, maxHas); + maxHas = minHas; ledgerHashes = Ledger::getHashesByIndex((seq < 500) ? 0 : (seq - 499), seq); it = ledgerHashes.find(seq); if (it == ledgerHashes.end()) @@ -172,6 +177,7 @@ void LedgerMaster::asyncAccept(Ledger::pointer ledger) break; prevHash = it->second.second; } + mCompleteLedgers.setRange(minHas, maxHas); resumeAcquiring(); } diff --git a/src/cpp/ripple/TaggedCache.h b/src/cpp/ripple/TaggedCache.h index c0990d0f3a..cd89c4fe2d 100644 --- a/src/cpp/ripple/TaggedCache.h +++ b/src/cpp/ripple/TaggedCache.h @@ -98,6 +98,8 @@ template void TaggedCache::setTa { boost::recursive_mutex::scoped_lock sl(mLock); mTargetSize = s; + if (s > 0) + mCache.rehash((s + (s >> 2)) / mCache.max_load_factor() + 1); Log(lsDEBUG, TaggedCachePartition) << mName << " target size set to " << s; }