From 340f17e471ed6b160b3c7ad857298685e5741038 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 24 Jun 2012 05:48:09 -0700 Subject: [PATCH] Use the new filters. --- src/HashedObject.cpp | 14 +++++++++----- src/LedgerAcquire.cpp | 10 +++++----- src/SHAMapSync.h | 4 ++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/HashedObject.cpp b/src/HashedObject.cpp index 03d885b71e..6d59e8b293 100644 --- a/src/HashedObject.cpp +++ b/src/HashedObject.cpp @@ -37,25 +37,28 @@ bool HashedObjectStore::store(HashedObjectType type, uint32 index, const std::vector& data, const uint256& hash) { // return: false=already in cache, true = added to cache if (!theApp->getHashNodeDB()) return true; - if (mCache.touch(hash)) return false; + if (mCache.touch(hash)) + { + Log(lsTRACE) << "HOS: " << hash.GetHex() << " store: incache"; + return false; + } HashedObject::pointer object = boost::make_shared(type, index, data); object->setHash(); if (object->getHash() != hash) throw std::runtime_error("Object added to store doesn't have valid hash"); - boost::recursive_mutex::scoped_lock sl(mWriteMutex); - mWriteSet.push_back(object); - if (mWriteSet.size() == 64) { boost::recursive_mutex::scoped_lock sl(mWriteMutex); - if (!mWritePending) + mWriteSet.push_back(object); + if (!mWritePending && (mWriteSet.size() >= 64)) { mWritePending = true; boost::thread t(boost::bind(&HashedObjectStore::bulkWrite, this)); t.detach(); } } + Log(lsTRACE) << "HOS: " << hash.GetHex() << " store: deferred"; return true; } @@ -69,6 +72,7 @@ void HashedObjectStore::bulkWrite() mWriteSet.swap(set); mWritePending = false; } + Log(lsINFO) << "HOS: BulkWrite " << set.size(); boost::format fExists("SELECT ObjType FROM CommittedObjects WHERE Hash = '%s';"); boost::format fAdd("INSERT INTO ComittedObject (Hash,ObjType,LedgerIndex,Object) VALUES ('%s','%c','%u','%s');"); diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index 9801719275..c87d16ee3a 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -169,7 +169,7 @@ void LedgerAcquire::trigger(Peer::pointer peer) { std::vector nodeIDs; std::vector nodeHashes; - TransactionStateSF tFilter(mLedger->getHash(), mLedger->getSeq()); + TransactionStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); mLedger->peekTransactionMap()->getMissingNodes(nodeIDs, nodeHashes, 128, &tFilter); if (nodeIDs.empty()) { @@ -222,7 +222,7 @@ void LedgerAcquire::trigger(Peer::pointer peer) { std::vector nodeIDs; std::vector nodeHashes; - AccountStateSF aFilter(mLedger->getHash(), mLedger->getSeq()); + AccountStateSF aFilter(mLedger->getHash(), mLedger->getLedgerSeq()); mLedger->peekAccountStateMap()->getMissingNodes(nodeIDs, nodeHashes, 128, &aFilter); if (nodeIDs.empty()) { @@ -300,7 +300,7 @@ bool LedgerAcquire::takeBase(const std::string& data, Peer::pointer peer) return false; } mHaveBase = true; - theApp->getHashedObjectStore().store(LEDGER, mLedger->getLedgerSeq(), data, mHash); + theApp->getHashedObjectStore().store(LEDGER, mLedger->getLedgerSeq(), strCopy(data), mHash); progress(); if (!mLedger->getTransHash()) mHaveTransactions = true; if (!mLedger->getAccountHash()) mHaveState = true; @@ -315,7 +315,7 @@ bool LedgerAcquire::takeTxNode(const std::list& nodeIDs, if (!mHaveBase) return false; std::list::const_iterator nodeIDit = nodeIDs.begin(); std::list< std::vector >::const_iterator nodeDatait = data.begin(); - TransactionStateSF tFilter(mLedger->getHash(), mLedger->getSeq()); + TransactionStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); while (nodeIDit != nodeIDs.end()) { if (nodeIDit->isRoot()) @@ -347,7 +347,7 @@ bool LedgerAcquire::takeAsNode(const std::list& nodeIDs, if (!mHaveBase) return false; std::list::const_iterator nodeIDit = nodeIDs.begin(); std::list< std::vector >::const_iterator nodeDatait = data.begin(); - AccountStateSF tFilter(mLedger->getHash(), mLedger->getSeq()); + AccountStateSF tFilter(mLedger->getHash(), mLedger->getLedgerSeq()); while (nodeIDit != nodeIDs.end()) { if (nodeIDit->isRoot()) diff --git a/src/SHAMapSync.h b/src/SHAMapSync.h index d88b98fd51..26b6185520 100644 --- a/src/SHAMapSync.h +++ b/src/SHAMapSync.h @@ -24,14 +24,14 @@ public: } }; -class LedgerAccountStateSF : public SHAMapSyncFilter +class AccountStateSF : public SHAMapSyncFilter { // sync filter for account state nodes during ledger sync protected: uint256 mLedgerHash; uint32 mLedgerSeq; public: - LedgerAccountStateSF(const uint256& ledgerHash, uint32 ledgerSeq) : mLedgerHash(ledgerHash), mLedgerSeq(ledgerSeq) + AccountStateSF(const uint256& ledgerHash, uint32 ledgerSeq) : mLedgerHash(ledgerHash), mLedgerSeq(ledgerSeq) { ; } virtual void gotNode(const SHAMapNode& id, const uint256& nodeHash,