From 9430f3665b4b6ccf96d533cedc963681de773f8b Mon Sep 17 00:00:00 2001 From: Mark Travis Date: Wed, 21 Jan 2015 19:07:50 -0800 Subject: [PATCH] Speed up access to ledger index value that can be deleted. --- src/ripple/app/misc/SHAMapStoreImp.cpp | 10 +++++----- src/ripple/app/misc/SHAMapStoreImp.h | 6 ++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ripple/app/misc/SHAMapStoreImp.cpp b/src/ripple/app/misc/SHAMapStoreImp.cpp index 804b57ef5..5825ee1b8 100644 --- a/src/ripple/app/misc/SHAMapStoreImp.cpp +++ b/src/ripple/app/misc/SHAMapStoreImp.cpp @@ -204,8 +204,8 @@ SHAMapStoreImp::SHAMapStoreImp (Setup const& setup, , scheduler_ (scheduler) , journal_ (journal) , nodeStoreJournal_ (nodeStoreJournal) - , database_ (nullptr) , transactionMaster_ (transactionMaster) + , canDelete_ (0) { if (setup_.deleteInterval) { @@ -326,17 +326,17 @@ SHAMapStoreImp::run() lastRotated = validatedSeq; state_db_.setLastRotated (lastRotated); } - LedgerIndex canDelete = std::numeric_limits ::max(); + canDelete_ = std::numeric_limits ::max(); if (setup_.advisoryDelete) - canDelete = state_db_.getCanDelete(); + canDelete_ = state_db_.getCanDelete(); // will delete up to (not including) lastRotated) if (validatedSeq >= lastRotated + setup_.deleteInterval - && canDelete >= lastRotated - 1) + && canDelete_ >= lastRotated - 1) { journal_.debug << "rotating validatedSeq " << validatedSeq << " lastRotated " << lastRotated << " deleteInterval " - << setup_.deleteInterval << " canDelete " << canDelete; + << setup_.deleteInterval << " canDelete_ " << canDelete_; switch (health()) { diff --git a/src/ripple/app/misc/SHAMapStoreImp.h b/src/ripple/app/misc/SHAMapStoreImp.h index b4dfb627f..8e3074af5 100644 --- a/src/ripple/app/misc/SHAMapStoreImp.h +++ b/src/ripple/app/misc/SHAMapStoreImp.h @@ -85,7 +85,7 @@ private: NodeStore::Scheduler& scheduler_; beast::Journal journal_; beast::Journal nodeStoreJournal_; - NodeStore::DatabaseRotating* database_; + NodeStore::DatabaseRotating* database_ = nullptr; SavedStateDB state_db_; std::thread thread_; bool stop_ = false; @@ -95,6 +95,7 @@ private: Ledger::pointer newLedger_; Ledger::pointer validatedLedger_; TransactionMaster& transactionMaster_; + std::atomic canDelete_; // these do not exist upon SHAMapStore creation, but do exist // as of onPrepare() or before NetworkOPs* netOPs_ = nullptr; @@ -131,6 +132,7 @@ public: LedgerIndex setCanDelete (LedgerIndex seq) override { + canDelete_ = seq; return state_db_.setCanDelete (seq); } @@ -149,7 +151,7 @@ public: LedgerIndex getCanDelete() override { - return state_db_.getCanDelete(); + return canDelete_; } void onLedgerClosed (Ledger::pointer validatedLedger) override;