From 1c56e3b53a970c2de6a6c9933a0790ae31445a4c Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 10 Feb 2013 16:38:52 -0800 Subject: [PATCH 1/3] Log load fee changes. --- src/cpp/ripple/LoadManager.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/cpp/ripple/LoadManager.cpp b/src/cpp/ripple/LoadManager.cpp index dd78cd3731..54c70bd98c 100644 --- a/src/cpp/ripple/LoadManager.cpp +++ b/src/cpp/ripple/LoadManager.cpp @@ -245,6 +245,8 @@ void LoadFeeTrack::setRemoteFee(uint32 f) void LoadFeeTrack::raiseLocalFee() { boost::mutex::scoped_lock sl(mLock); + uint32 origFee = mLocalTxnLoadFee; + if (mLocalTxnLoadFee < mLocalTxnLoadFee) // make sure this fee takes effect mLocalTxnLoadFee = mLocalTxnLoadFee; @@ -252,15 +254,23 @@ void LoadFeeTrack::raiseLocalFee() if (mLocalTxnLoadFee > lftFeeMax) mLocalTxnLoadFee = lftFeeMax; + + tLog(origFee != mLocalTxnLoadFee, lsDEBUG) << + "Local load fee raised from " << origFee << " to " << mLocalTxnLoadFee; } void LoadFeeTrack::lowerLocalFee() { boost::mutex::scoped_lock sl(mLock); + uint32 origFee = mLocalTxnLoadFee; + mLocalTxnLoadFee -= (mLocalTxnLoadFee / lftFeeDecFraction ); // reduce by 1/16th if (mLocalTxnLoadFee < lftNormalFee) mLocalTxnLoadFee = lftNormalFee; + + tLog(origFee != mLocalTxnLoadFee, lsDEBUG) << + "Local load fee lowered from " << origFee << " to " << mLocalTxnLoadFee; } Json::Value LoadFeeTrack::getJson(uint64 baseFee, uint32 referenceFeeUnits) From a26a30247659c214410e33959f5e3167cc8a1e98 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 10 Feb 2013 16:40:52 -0800 Subject: [PATCH 2/3] Accept old ledgers acquired over the network at a lower priority. --- src/cpp/ripple/JobQueue.cpp | 6 ++++-- src/cpp/ripple/JobQueue.h | 27 ++++++++++++++------------- src/cpp/ripple/LedgerMaster.cpp | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/cpp/ripple/JobQueue.cpp b/src/cpp/ripple/JobQueue.cpp index 3a795fd141..ebd38a1308 100644 --- a/src/cpp/ripple/JobQueue.cpp +++ b/src/cpp/ripple/JobQueue.cpp @@ -11,11 +11,12 @@ SETUP_LOG(); JobQueue::JobQueue() : mLastJob(0), mThreadCount(0), mShuttingDown(false) { + mJobLoads[jtPUBOLDLEDGER].setTargeLatency(10000, 15000); mJobLoads[jtVALIDATION_ut].setTargetLatency(2000, 5000); mJobLoads[jtPROOFWORK].setTargetLatency(2000, 5000); mJobLoads[jtTRANSACTION].setTargetLatency(250, 1000); mJobLoads[jtPROPOSAL_ut].setTargetLatency(500, 1250); - mJobLoads[jtPUBLEDGER].setTargetLatency(1000, 2500); + mJobLoads[jtPUBLEDGER].setTargetLatency(3000, 4500); mJobLoads[jtWAL].setTargetLatency(1000, 2500); mJobLoads[jtVALIDATION_t].setTargetLatency(500, 1500); mJobLoads[jtWRITE].setTargetLatency(750, 1500); @@ -35,12 +36,13 @@ const char* Job::toString(JobType t) switch(t) { case jtINVALID: return "invalid"; + case jtPUBOLDLEDGER: return "publishAcqLedger"; case jtVALIDATION_ut: return "untrustedValidation"; case jtPROOFWORK: return "proofOfWork"; case jtPROPOSAL_ut: return "untrustedProposal"; case jtCLIENT: return "clientCommand"; case jtTRANSACTION: return "transaction"; - case jtPUBLEDGER: return "publishLedger"; + case jtPUBLEDGER: return "publishNewLedger"; case jtVALIDATION_t: return "trustedValidation"; case jtWAL: return "writeAhead"; case jtWRITE: return "writeObjects"; diff --git a/src/cpp/ripple/JobQueue.h b/src/cpp/ripple/JobQueue.h index 22bfefad95..d16ddec3db 100644 --- a/src/cpp/ripple/JobQueue.h +++ b/src/cpp/ripple/JobQueue.h @@ -21,19 +21,20 @@ enum JobType { // must be in priority order, low to high jtINVALID = -1, - jtVALIDATION_ut = 1, // A validation from an untrusted source - jtPROOFWORK = 2, // A proof of work demand from another server - jtPROPOSAL_ut = 3, // A proposal from an untrusted source - jtCLIENT = 4, // A websocket command from the client - jtTRANSACTION = 5, // A transaction received from the network - jtPUBLEDGER = 6, // Publish a fully-accepted ledger - jtWAL = 7, // Write-ahead logging - jtVALIDATION_t = 8, // A validation from a trusted source - jtWRITE = 9, // Write out hashed objects - jtTRANSACTION_l = 10, // A local transaction - jtPROPOSAL_t = 11, // A proposal from a trusted source - jtADMIN = 12, // An administrative operation - jtDEATH = 13, // job of death, used internally + jtPUBOLDLEDGER = 1, // An old ledger has been accepted + jtVALIDATION_ut = 2, // A validation from an untrusted source + jtPROOFWORK = 3, // A proof of work demand from another server + jtPROPOSAL_ut = 4, // A proposal from an untrusted source + jtCLIENT = 5, // A websocket command from the client + jtTRANSACTION = 6, // A transaction received from the network + jtPUBLEDGER = 7, // Publish a fully-accepted ledger + jtWAL = 8, // Write-ahead logging + jtVALIDATION_t = 9, // A validation from a trusted source + jtWRITE = 10, // Write out hashed objects + jtTRANSACTION_l = 11, // A local transaction + jtPROPOSAL_t = 12, // A proposal from a trusted source + jtADMIN = 13, // An administrative operation + jtDEATH = 14, // job of death, used internally // special types not dispatched by the job pool jtPEER = 17, diff --git a/src/cpp/ripple/LedgerMaster.cpp b/src/cpp/ripple/LedgerMaster.cpp index 03a60a17b0..8ab38341c4 100644 --- a/src/cpp/ripple/LedgerMaster.cpp +++ b/src/cpp/ripple/LedgerMaster.cpp @@ -173,7 +173,7 @@ bool LedgerMaster::acquireMissingLedger(Ledger::ref origLedger, const uint256& l { cLog(lsTRACE) << "Ledger hash found in database"; mTooFast = true; - theApp->getJobQueue().addJob(jtPUBLEDGER, boost::bind(&LedgerMaster::asyncAccept, this, ledger)); + theApp->getJobQueue().addJob(jtPUBOLDLEDGER, boost::bind(&LedgerMaster::asyncAccept, this, ledger)); return true; } From 4280214a94d54be4d49a8e6c6c13c225f3b57213 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sun, 10 Feb 2013 16:57:38 -0800 Subject: [PATCH 3/3] Typo. --- src/cpp/ripple/JobQueue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/ripple/JobQueue.cpp b/src/cpp/ripple/JobQueue.cpp index ebd38a1308..53d98484b4 100644 --- a/src/cpp/ripple/JobQueue.cpp +++ b/src/cpp/ripple/JobQueue.cpp @@ -11,7 +11,7 @@ SETUP_LOG(); JobQueue::JobQueue() : mLastJob(0), mThreadCount(0), mShuttingDown(false) { - mJobLoads[jtPUBOLDLEDGER].setTargeLatency(10000, 15000); + mJobLoads[jtPUBOLDLEDGER].setTargetLatency(10000, 15000); mJobLoads[jtVALIDATION_ut].setTargetLatency(2000, 5000); mJobLoads[jtPROOFWORK].setTargetLatency(2000, 5000); mJobLoads[jtTRANSACTION].setTargetLatency(250, 1000);