From b4593a274d7295e58dc3c4dc4ae0d94c2d31d343 Mon Sep 17 00:00:00 2001 From: David Schwartz Date: Fri, 7 Mar 2014 14:15:04 -0800 Subject: [PATCH] Limit how many reads we defer to avoid overflowing the cache --- src/ripple_app/shamap/SHAMapSync.cpp | 29 +++++++++++++++++--- src/ripple_core/nodestore/api/Database.h | 5 ++++ src/ripple_core/nodestore/impl/DatabaseImp.h | 6 ++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/ripple_app/shamap/SHAMapSync.cpp b/src/ripple_app/shamap/SHAMapSync.cpp index ccba69df4..84880902a 100644 --- a/src/ripple_app/shamap/SHAMapSync.cpp +++ b/src/ripple_app/shamap/SHAMapSync.cpp @@ -132,14 +132,18 @@ void SHAMap::getMissingNodes (std::vector& nodeIDs, std::vector missingHashes; + while (1) { + std::vector > deferredReads; + deferredReads.reserve (maxDefer + 16); std::stack stack; - int deferCount = 0; // Traverse the map without blocking @@ -179,7 +183,7 @@ void SHAMap::getMissingNodes (std::vector& nodeIDs, std::vector& nodeIDs, std::vector