From f9a65e49663f130c3469107ebc513a79ae5ce6c6 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 24 Sep 2015 12:10:04 -0700 Subject: [PATCH] Add '--valid" command line option to consider starting ledger valid --- src/ripple/app/main/Application.cpp | 2 +- src/ripple/app/main/Main.cpp | 17 ++++++++++++++++- src/ripple/app/misc/NetworkOPs.cpp | 11 ++++++----- src/ripple/app/misc/NetworkOPs.h | 3 ++- src/ripple/core/Config.h | 2 +- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/ripple/app/main/Application.cpp b/src/ripple/app/main/Application.cpp index d2294402ab..899a2bd30d 100644 --- a/src/ripple/app/main/Application.cpp +++ b/src/ripple/app/main/Application.cpp @@ -463,7 +463,7 @@ public: logs_->journal("TaggedCache")) , m_networkOPs (make_NetworkOPs (*this, stopwatch(), - config_->RUN_STANDALONE, config_->NETWORK_QUORUM, + config_->RUN_STANDALONE, config_->NETWORK_QUORUM, config_->START_VALID, *m_jobQueue, *m_ledgerMaster, *m_jobQueue, logs_->journal("NetworkOPs"))) diff --git a/src/ripple/app/main/Main.cpp b/src/ripple/app/main/Main.cpp index abea442993..683bb7438b 100644 --- a/src/ripple/app/main/Main.cpp +++ b/src/ripple/app/main/Main.cpp @@ -292,6 +292,7 @@ int run (int argc, char** argv) ("quorum", po::value (), "Set the validation quorum.") ("verbose,v", "Verbose logging.") ("load", "Load the current ledger from the local DB.") + ("valid", "Consider the initial ledger a valid network ledger.") ("replay","Replay a ledger close.") ("ledger", po::value (), "Load the specified ledger and start from .") ("ledgerfile", po::value (), "Load the specified ledger file.") @@ -409,8 +410,22 @@ int run (int argc, char** argv) { config->START_UP = Config::LOAD; } - else if (vm.count ("net")) + + if (vm.count ("valid")) { + config->START_VALID = true; + } + + if (vm.count ("net")) + { + if ((config->START_UP == Config::LOAD) || + (config->START_UP == Config::REPLAY)) + { + std::cerr << + "Net and load/reply options are incompatible" << std::endl; + return -1; + } + config->START_UP = Config::NETWORK; if (config->VALIDATION_QUORUM < 2) diff --git a/src/ripple/app/misc/NetworkOPs.cpp b/src/ripple/app/misc/NetworkOPs.cpp index af4ded1f73..3ddc7cbcdd 100644 --- a/src/ripple/app/misc/NetworkOPs.cpp +++ b/src/ripple/app/misc/NetworkOPs.cpp @@ -117,7 +117,7 @@ public: // NetworkOPsImp ( Application& app, clock_type& clock, bool standalone, - std::size_t network_quorum, JobQueue& job_queue, + std::size_t network_quorum, bool start_valid, JobQueue& job_queue, LedgerMaster& ledgerMaster, Stoppable& parent, beast::Journal journal) : NetworkOPs (parent) @@ -125,7 +125,7 @@ public: , m_clock (clock) , m_journal (journal) , m_localTX (make_LocalTxs ()) - , mMode (omDISCONNECTED) + , mMode (start_valid ? omFULL : omDISCONNECTED) , mNeedNetworkLedger (false) , m_amendmentBlocked (false) , m_heartbeatTimer (this) @@ -136,7 +136,7 @@ public: , mLastLoadFactor (256) , m_job_queue (job_queue) , m_standalone (standalone) - , m_network_quorum (network_quorum) + , m_network_quorum (start_valid ? 0 : network_quorum) { } @@ -2927,11 +2927,12 @@ NetworkOPs::~NetworkOPs () std::unique_ptr make_NetworkOPs (Application& app, NetworkOPs::clock_type& clock, bool standalone, - std::size_t network_quorum, JobQueue& job_queue, LedgerMaster& ledgerMaster, + std::size_t network_quorum, bool startvalid, + JobQueue& job_queue, LedgerMaster& ledgerMaster, beast::Stoppable& parent, beast::Journal journal) { return std::make_unique (app, clock, standalone, network_quorum, - job_queue, ledgerMaster, parent, journal); + startvalid, job_queue, ledgerMaster, parent, journal); } } // ripple diff --git a/src/ripple/app/misc/NetworkOPs.h b/src/ripple/app/misc/NetworkOPs.h index 9547dd5a5b..27a422cb8e 100644 --- a/src/ripple/app/misc/NetworkOPs.h +++ b/src/ripple/app/misc/NetworkOPs.h @@ -236,7 +236,8 @@ public: std::unique_ptr make_NetworkOPs (Application& app, NetworkOPs::clock_type& clock, bool standalone, - std::size_t network_quorum, JobQueue& job_queue, LedgerMaster& ledgerMaster, + std::size_t network_quorum, bool start_valid, + JobQueue& job_queue, LedgerMaster& ledgerMaster, beast::Stoppable& parent, beast::Journal journal); } // ripple diff --git a/src/ripple/core/Config.h b/src/ripple/core/Config.h index 29cdda4309..d97d9828f5 100644 --- a/src/ripple/core/Config.h +++ b/src/ripple/core/Config.h @@ -185,7 +185,7 @@ public: }; StartUpType START_UP = NORMAL; - + bool START_VALID = false; std::string START_LEDGER;