rippled
LedgerMaster.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_APP_LEDGER_LEDGERMASTER_H_INCLUDED
21 #define RIPPLE_APP_LEDGER_LEDGERMASTER_H_INCLUDED
22 
23 #include <ripple/app/ledger/AbstractFetchPackContainer.h>
24 #include <ripple/app/ledger/InboundLedgers.h>
25 #include <ripple/app/ledger/Ledger.h>
26 #include <ripple/app/ledger/LedgerCleaner.h>
27 #include <ripple/app/ledger/LedgerHistory.h>
28 #include <ripple/app/ledger/LedgerHolder.h>
29 #include <ripple/app/ledger/LedgerReplay.h>
30 #include <ripple/app/main/Application.h>
31 #include <ripple/app/misc/CanonicalTXSet.h>
32 #include <ripple/basics/RangeSet.h>
33 #include <ripple/basics/StringUtilities.h>
34 #include <ripple/basics/chrono.h>
35 #include <ripple/beast/insight/Collector.h>
36 #include <ripple/beast/utility/PropertyStream.h>
37 #include <ripple/core/Stoppable.h>
38 #include <ripple/protocol/Protocol.h>
39 #include <ripple/protocol/RippleLedgerHash.h>
40 #include <ripple/protocol/STValidation.h>
41 #include <ripple/protocol/messages.h>
42 #include <boost/optional.hpp>
43 
44 #include <mutex>
45 
46 namespace ripple {
47 
48 class Peer;
49 class Transaction;
50 
51 // Tracks the current ledger and any ledgers in the process of closing
52 // Tracks ledger history
53 // Tracks held transactions
55 {
56 public:
57  // Age for last validated ledger if the process has yet to validate.
59  std::chrono::hours{24 * 14};
60 
61  explicit LedgerMaster(
62  Application& app,
64  Stoppable& parent,
65  beast::insight::Collector::ptr const& collector,
66  beast::Journal journal);
67 
68  virtual ~LedgerMaster() = default;
69 
74 
75  bool
76  isCompatible(ReadView const&, beast::Journal::Stream, char const* reason);
77 
79  peekMutex();
80 
81  // The current ledger is the ledger we believe new transactions should go in
84 
85  // The finalized ledger is the last closed/accepted ledger
88  {
89  return mClosedLedger.get();
90  }
91 
92  // The validated ledger is the last fully validated ledger
95  {
96  return mValidLedger.get();
97  }
98 
99  // The Rules are in the last fully validated ledger if there is one.
100  Rules
102 
103  // This is the last ledger we published to clients and can lag the validated
104  // ledger
107 
112  bool
113  isCaughtUp(std::string& reason);
114 
117 
118  bool
120 
121  void
123  std::shared_ptr<Ledger const> const& ledger,
124  bool isSynchronous,
125  bool isCurrent);
126 
131  bool
133 
134  void
135  switchLCL(std::shared_ptr<Ledger const> const& lastClosed);
136 
137  void
138  failedSave(std::uint32_t seq, uint256 const& hash);
139 
142 
148  void
150 
158 
161  uint256
163 
165  boost::optional<LedgerHash>
167 
175  boost::optional<LedgerHash>
177  std::uint32_t index,
178  std::shared_ptr<ReadView const> const& referenceLedger,
179  InboundLedger::Reason reason);
180 
183 
185  getLedgerByHash(uint256 const& hash);
186 
187  void
189 
190  boost::optional<NetClock::time_point>
191  getCloseTimeBySeq(LedgerIndex ledgerIndex);
192 
193  boost::optional<NetClock::time_point>
194  getCloseTimeByHash(LedgerHash const& ledgerHash, LedgerIndex ledgerIndex);
195 
196  void
198  void
199  fixMismatch(ReadView const& ledger);
200 
201  bool
203  void
205  bool
207  bool
209 
210  void
211  tune(int size, std::chrono::seconds age);
212  void
213  sweep();
214  float
215  getCacheHitRate();
216 
217  void
219  void
220  checkAccept(uint256 const& hash, std::uint32_t seq);
221  void
223  std::shared_ptr<Ledger const> const& ledger,
224  uint256 const& consensusHash,
225  Json::Value consensus);
226 
229  void
231 
232  void
233  tryAdvance();
234  bool
235  newPathRequest(); // Returns true if path request successfully placed.
236  bool
238  bool
239  newOrderBookDB(); // Returns true if able to fulfill request.
240 
241  bool
242  fixIndex(LedgerIndex ledgerIndex, LedgerHash const& ledgerHash);
243  void
244  doLedgerCleaner(Json::Value const& parameters);
245 
248 
249  void
251 
252  void
254 
255  // ledger replay
256  void
259  releaseReplay();
260 
261  // Fetch Packs
262  void
263  gotFetchPack(bool progress, std::uint32_t seq);
264 
265  void
266  addFetchPack(uint256 const& hash, std::shared_ptr<Blob> data);
267 
268  boost::optional<Blob>
269  getFetchPack(uint256 const& hash) override;
270 
271  void
273  std::weak_ptr<Peer> const& wPeer,
275  uint256 haveLedgerHash,
276  UptimeClock::time_point uptime);
277 
279  getFetchPackCacheSize() const;
280 
282  bool
284  {
285  return !mValidLedger.empty();
286  }
287 
288  // Returns the minimum ledger sequence in SQL database, if any.
289  boost::optional<LedgerIndex>
290  minSqlSeq();
291 
292 private:
293  void
295  void
297 
298  void
300 
301  void
303 
304  boost::optional<LedgerHash>
306 
309  void
310  advanceThread();
311  void
313  std::uint32_t missing,
314  bool& progress,
315  InboundLedger::Reason reason,
317  // Try to publish ledgers, acquire missing ledgers. Always called with
318  // m_mutex locked. The passed lock is a reminder to callers.
319  void
321 
324 
325  void
326  updatePaths(Job& job);
327 
328  // Returns true if work started. Always called with m_mutex locked.
329  // The passed lock is a reminder to callers.
330  bool
332 
335 
337 
338  // The ledger that most recently closed.
340 
341  // The highest-sequence ledger we have fully accepted.
343 
344  // The last ledger we have published.
346 
347  // The last ledger we did pathfinding against.
349 
350  // The last ledger we handled fetching history
352 
353  // The last ledger we handled fetching for a shard
355 
356  // Fully validated ledger, whether or not we have the ledger resident.
358 
360 
362 
363  // A set of transactions to replay during the next close
365 
368 
370 
371  // Publish thread is running.
372  bool mAdvanceThread{false};
373 
374  // Publish thread has work to do.
375  bool mAdvanceWork{false};
377 
378  int mPathFindThread{0}; // Pathfinder jobs dispatched
379  bool mPathFindNewRequest{false};
380 
382  ATOMIC_FLAG_INIT; // GotFetchPack jobs dispatched
383 
389 
390  // The server is in standalone mode
391  bool const standalone_;
392 
393  // How many ledgers before the current ledger do we allow peers to request?
395 
396  // How much history do we want to keep
398 
400 
402 
404 
405  // Try to keep a validator from switching from test to live network
406  // without first wiping the database.
408 
409  // Time that the previous upgrade warning was issued.
411 
412 private:
413  struct Stats
414  {
415  template <class Handler>
417  Handler const& handler,
418  beast::insight::Collector::ptr const& collector)
419  : hook(collector->make_hook(handler))
421  collector->make_gauge("LedgerMaster", "Validated_Ledger_Age"))
423  collector->make_gauge("LedgerMaster", "Published_Ledger_Age"))
424  {
425  }
426 
430  };
431 
433 
434 private:
435  void
437  {
438  std::lock_guard lock(m_mutex);
441  }
442 };
443 
444 } // namespace ripple
445 
446 #endif
ripple::LedgerMaster::getValidatedRange
bool getValidatedRange(std::uint32_t &minVal, std::uint32_t &maxVal)
Definition: LedgerMaster.cpp:610
ripple::LedgerMaster::mPubLedger
std::shared_ptr< Ledger const > mPubLedger
Definition: LedgerMaster.h:345
ripple::Application
Definition: Application.h:97
ripple::LedgerMaster::mClosedLedger
LedgerHolder mClosedLedger
Definition: LedgerMaster.h:339
ripple::LedgerMaster::getPublishedLedger
std::shared_ptr< ReadView const > getPublishedLedger()
Definition: LedgerMaster.cpp:1549
ripple::LedgerMaster::fetch_packs_
TaggedCache< uint256, Blob > fetch_packs_
Definition: LedgerMaster.h:401
ripple::LedgerMaster::makeFetchPack
void makeFetchPack(std::weak_ptr< Peer > const &wPeer, std::shared_ptr< protocol::TMGetObjectByHash > const &request, uint256 haveLedgerHash, UptimeClock::time_point uptime)
Definition: LedgerMaster.cpp:2036
ripple::LedgerMaster::clearLedgerCachePrior
void clearLedgerCachePrior(LedgerIndex seq)
Definition: LedgerMaster.cpp:1762
std::string
STL class.
std::shared_ptr< Collector >
ripple::TaggedCache
Map/cache combination.
Definition: TaggedCache.h:52
ripple::LedgerMaster::sweep
void sweep()
Definition: LedgerMaster.cpp:1735
ripple::LedgerMaster::mBuildingLedgerSeq
std::atomic< LedgerIndex > mBuildingLedgerSeq
Definition: LedgerMaster.h:388
ripple::LedgerMaster::app_
Application & app_
Definition: LedgerMaster.h:333
ripple::LedgerMaster::Stats::Stats
Stats(Handler const &handler, beast::insight::Collector::ptr const &collector)
Definition: LedgerMaster.h:416
ripple::LedgerMaster::advanceThread
void advanceThread()
Definition: LedgerMaster.cpp:1232
ripple::LedgerMaster::minSqlSeq
boost::optional< LedgerIndex > minSqlSeq()
Definition: LedgerMaster.cpp:2189
ripple::LedgerMaster::mLedgerHistory
LedgerHistory mLedgerHistory
Definition: LedgerMaster.h:359
ripple::LedgerMaster::getLedgerHashForHistory
boost::optional< LedgerHash > getLedgerHashForHistory(LedgerIndex index, InboundLedger::Reason reason)
Definition: LedgerMaster.cpp:1253
ripple::LedgerMaster::mHeldTransactions
CanonicalTXSet mHeldTransactions
Definition: LedgerMaster.h:361
std::pair
beast::PropertyStream::Source
Subclasses can be called to write to a stream and have children.
Definition: PropertyStream.h:342
ripple::LedgerMaster
Definition: LedgerMaster.h:54
ripple::LedgerMaster::getValidLedgerIndex
LedgerIndex getValidLedgerIndex()
Definition: LedgerMaster.cpp:212
std::vector
STL class.
ripple::LedgerMaster::mHistLedger
std::shared_ptr< Ledger const > mHistLedger
Definition: LedgerMaster.h:351
ripple::LedgerMaster::Stats::hook
beast::insight::Hook hook
Definition: LedgerMaster.h:427
ripple::LedgerMaster::getPublishedLedgerAge
std::chrono::seconds getPublishedLedgerAge()
Definition: LedgerMaster.cpp:249
ripple::LedgerMaster::upgradeWarningPrevTime_
TimeKeeper::time_point upgradeWarningPrevTime_
Definition: LedgerMaster.h:410
ripple::LedgerMaster::releaseReplay
std::unique_ptr< LedgerReplay > releaseReplay()
Definition: LedgerMaster.cpp:1774
std::chrono::seconds
ripple::LedgerMaster::getValidatedRules
Rules getValidatedRules()
Definition: LedgerMaster.cpp:1534
ripple::LedgerMaster::mCompleteLock
std::recursive_mutex mCompleteLock
Definition: LedgerMaster.h:366
ripple::LedgerMaster::applyHeldTransactions
void applyHeldTransactions()
Apply held transactions to the open ledger This is normally called as we close the ledger.
Definition: LedgerMaster.cpp:522
ripple::LedgerMaster::switchLCL
void switchLCL(std::shared_ptr< Ledger const > const &lastClosed)
Definition: LedgerMaster.cpp:478
std::recursive_mutex
STL class.
ripple::LedgerMaster::newPFWork
bool newPFWork(const char *name, std::unique_lock< std::recursive_mutex > &)
A thread needs to be dispatched to handle pathfinding work of some kind.
Definition: LedgerMaster.cpp:1503
std::lock_guard
STL class.
ripple::LedgerMaster::getLedgerByHash
std::shared_ptr< Ledger const > getLedgerByHash(uint256 const &hash)
Definition: LedgerMaster.cpp:1703
ripple::LedgerMaster::walkHashBySeq
boost::optional< LedgerHash > walkHashBySeq(std::uint32_t index, InboundLedger::Reason reason)
Walk to a ledger's hash using the skip list.
Definition: LedgerMaster.cpp:1603
ripple::LedgerMaster::isNewPathRequest
bool isNewPathRequest()
Definition: LedgerMaster.cpp:1481
ripple::stopwatch
Stopwatch & stopwatch()
Returns an instance of a wall clock.
Definition: chrono.h:86
ripple::LedgerMaster::getCloseTimeByHash
boost::optional< NetClock::time_point > getCloseTimeByHash(LedgerHash const &ledgerHash, LedgerIndex ledgerIndex)
Definition: LedgerMaster.cpp:1571
ripple::LedgerMaster::getEarliestFetch
std::uint32_t getEarliestFetch()
Definition: LedgerMaster.cpp:651
ripple::LedgerHistory
Retains historical ledgers.
Definition: LedgerHistory.h:34
ripple::LedgerMaster::setFullLedger
void setFullLedger(std::shared_ptr< Ledger const > const &ledger, bool isSynchronous, bool isCurrent)
Definition: LedgerMaster.cpp:864
ripple::LedgerMaster::tune
void tune(int size, std::chrono::seconds age)
Definition: LedgerMaster.cpp:1729
std::atomic_flag
ripple::LedgerMaster::fixMismatch
void fixMismatch(ReadView const &ledger)
Definition: LedgerMaster.cpp:810
ripple::LedgerMaster::fetch_depth_
const std::uint32_t fetch_depth_
Definition: LedgerMaster.h:394
ripple::CanonicalTXSet
Holds transactions which were deferred to the next pass of consensus.
Definition: CanonicalTXSet.h:37
ripple::LedgerMaster::getCompleteLedgers
std::string getCompleteLedgers()
Definition: LedgerMaster.cpp:1556
ripple::LedgerMaster::ledger_fetch_size_
const std::uint32_t ledger_fetch_size_
Definition: LedgerMaster.h:399
ripple::LedgerMaster::Stats::validatedLedgerAge
beast::insight::Gauge validatedLedgerAge
Definition: LedgerMaster.h:428
ripple::uint256
base_uint< 256 > uint256
Definition: base_uint.h:493
ripple::LedgerMaster::peekMutex
std::recursive_mutex & peekMutex()
Definition: LedgerMaster.cpp:1521
ripple::LedgerMaster::mGotFetchPackThread
std::atomic_flag mGotFetchPackThread
Definition: LedgerMaster.h:381
ripple::base_uint< 256 >
ripple::LedgerMaster::mCompleteLedgers
RangeSet< std::uint32_t > mCompleteLedgers
Definition: LedgerMaster.h:367
ripple::LedgerMaster::getPropertySource
beast::PropertyStream::Source & getPropertySource()
Definition: LedgerMaster.cpp:1748
ripple::LedgerMaster::LedgerMaster
LedgerMaster(Application &app, Stopwatch &stopwatch, Stoppable &parent, beast::insight::Collector::ptr const &collector, beast::Journal journal)
Definition: LedgerMaster.cpp:178
ripple::Stoppable
Provides an interface for starting and stopping.
Definition: Stoppable.h:201
ripple::LedgerMaster::mFillInProgress
int mFillInProgress
Definition: LedgerMaster.h:376
ripple::LedgerMaster::replayData
std::unique_ptr< LedgerReplay > replayData
Definition: LedgerMaster.h:364
ripple::LedgerMaster::gotFetchPack
void gotFetchPack(bool progress, std::uint32_t seq)
Definition: LedgerMaster.cpp:2024
ripple::LedgerMaster::fetchForHistory
void fetchForHistory(std::uint32_t missing, bool &progress, InboundLedger::Reason reason, std::unique_lock< std::recursive_mutex > &)
Definition: LedgerMaster.cpp:1780
ripple::LedgerMaster::failedSave
void failedSave(std::uint32_t seq, uint256 const &hash)
Definition: LedgerMaster.cpp:924
ripple::LedgerHolder::empty
bool empty()
Definition: LedgerHolder.h:62
ripple::LedgerMaster::getFetchPack
boost::optional< Blob > getFetchPack(uint256 const &hash) override
Retrieves partial ledger data of the coresponding hash from peers.
Definition: LedgerMaster.cpp:2011
ripple::LedgerMaster::getFullValidatedRange
bool getFullValidatedRange(std::uint32_t &minVal, std::uint32_t &maxVal)
Definition: LedgerMaster.cpp:583
ripple::LedgerMaster::fixIndex
bool fixIndex(LedgerIndex ledgerIndex, LedgerHash const &ledgerHash)
Definition: LedgerMaster.cpp:504
ripple::isCurrent
bool isCurrent(ValidationParms const &p, NetClock::time_point now, NetClock::time_point signTime, NetClock::time_point seenTime)
Whether a validation is still current.
Definition: Validations.h:145
std::unique_lock< std::recursive_mutex >
ripple::LedgerMaster::canBeCurrent
bool canBeCurrent(std::shared_ptr< Ledger const > const &ledger)
Check the sequence number and parent close time of a ledger against our clock and last validated ledg...
Definition: LedgerMaster.cpp:410
ripple::AbstractFetchPackContainer
An interface facilitating retrieval of fetch packs without an application or ledgermaster object.
Definition: AbstractFetchPackContainer.h:32
ripple::LedgerMaster::haveLedger
bool haveLedger(std::uint32_t seq)
Definition: LedgerMaster.cpp:568
ripple::LedgerMaster::getValidatedLedger
std::shared_ptr< Ledger const > getValidatedLedger()
Definition: LedgerMaster.h:94
beast::Journal::Stream
Provide a light-weight way to check active() before string formatting.
Definition: Journal.h:194
ripple::LedgerMaster::isCompatible
bool isCompatible(ReadView const &, beast::Journal::Stream, char const *reason)
Definition: LedgerMaster.cpp:218
std::chrono::time_point
ripple::LedgerMaster::getLedgerBySeq
std::shared_ptr< Ledger const > getLedgerBySeq(std::uint32_t index)
Definition: LedgerMaster.cpp:1667
ripple::LedgerMaster::newPathRequest
bool newPathRequest()
Definition: LedgerMaster.cpp:1473
ripple::Job
Definition: Job.h:82
beast::Journal
A generic endpoint for log messages.
Definition: Journal.h:58
std::uint32_t
ripple::LedgerMaster::mLedgerCleaner
std::unique_ptr< detail::LedgerCleaner > mLedgerCleaner
Definition: LedgerMaster.h:369
ripple::LedgerMaster::addHeldTransaction
void addHeldTransaction(std::shared_ptr< Transaction > const &trans)
Definition: LedgerMaster.cpp:399
ripple::LedgerMaster::setValidLedger
void setValidLedger(std::shared_ptr< Ledger const > const &l)
Definition: LedgerMaster.cpp:311
std::atomic< std::uint32_t >
ripple::LedgerMaster::mPathFindNewRequest
bool mPathFindNewRequest
Definition: LedgerMaster.h:379
ripple::LedgerHolder::get
std::shared_ptr< Ledger const > get()
Definition: LedgerHolder.h:55
ripple::LedgerMaster::getCurrentLedger
std::shared_ptr< ReadView const > getCurrentLedger()
Definition: LedgerMaster.cpp:1528
ripple::LedgerMaster::newOrderBookDB
bool newOrderBookDB()
Definition: LedgerMaster.cpp:1492
ripple::LedgerMaster::getNeededValidations
std::size_t getNeededValidations()
Determines how many validations are needed to fully validate a ledger.
Definition: LedgerMaster.cpp:988
beast::abstract_clock< std::chrono::steady_clock >
ripple::LedgerMaster::mAdvanceThread
bool mAdvanceThread
Definition: LedgerMaster.h:372
ripple::LedgerMaster::checkAccept
void checkAccept(std::shared_ptr< Ledger const > const &ledger)
Definition: LedgerMaster.cpp:994
beast::insight::Gauge
A metric for measuring an integral value.
Definition: Gauge.h:39
ripple::LedgerMaster::NO_VALIDATED_LEDGER_AGE
static constexpr std::chrono::seconds NO_VALIDATED_LEDGER_AGE
Definition: LedgerMaster.h:58
std::weak_ptr< Peer >
ripple::LedgerMaster::max_ledger_difference_
const LedgerIndex max_ledger_difference_
Definition: LedgerMaster.h:407
ripple::LedgerMaster::getFetchPackCacheSize
std::size_t getFetchPackCacheSize() const
Definition: LedgerMaster.cpp:2182
ripple::LedgerMaster::doLedgerCleaner
void doLedgerCleaner(Json::Value const &parameters)
Definition: LedgerMaster.cpp:1716
ripple::LedgerMaster::mPathLedger
std::shared_ptr< Ledger const > mPathLedger
Definition: LedgerMaster.h:348
ripple::LedgerMaster::haveValidated
bool haveValidated()
Whether we have ever fully validated a ledger.
Definition: LedgerMaster.h:283
ripple::LedgerMaster::getValidatedLedgerAge
std::chrono::seconds getValidatedLedgerAge()
Definition: LedgerMaster.cpp:268
ripple::LedgerMaster::getClosedLedger
std::shared_ptr< Ledger const > getClosedLedger()
Definition: LedgerMaster.h:87
ripple::LedgerMaster::mAdvanceWork
bool mAdvanceWork
Definition: LedgerMaster.h:375
ripple::ReadView
A view into a ledger.
Definition: ReadView.h:192
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::LedgerMaster::Stats::publishedLedgerAge
beast::insight::Gauge publishedLedgerAge
Definition: LedgerMaster.h:429
ripple::LedgerMaster::mPubLedgerClose
std::atomic< std::uint32_t > mPubLedgerClose
Definition: LedgerMaster.h:384
ripple::LedgerMaster::ledger_history_
const std::uint32_t ledger_history_
Definition: LedgerMaster.h:397
ripple::LedgerMaster::mPubLedgerSeq
std::atomic< LedgerIndex > mPubLedgerSeq
Definition: LedgerMaster.h:385
ripple::LedgerMaster::~LedgerMaster
virtual ~LedgerMaster()=default
ripple::LedgerMaster::getBuildingLedger
LedgerIndex getBuildingLedger()
Definition: LedgerMaster.cpp:555
ripple::LedgerMaster::addFetchPack
void addFetchPack(uint256 const &hash, std::shared_ptr< Blob > data)
Definition: LedgerMaster.cpp:2005
ripple::LedgerMaster::clearLedger
void clearLedger(std::uint32_t seq)
Definition: LedgerMaster.cpp:575
ripple::LedgerMaster::m_journal
beast::Journal m_journal
Definition: LedgerMaster.h:334
ripple::LedgerMaster::getCloseTimeBySeq
boost::optional< NetClock::time_point > getCloseTimeBySeq(LedgerIndex ledgerIndex)
Definition: LedgerMaster.cpp:1563
ripple::LedgerMaster::mValidLedgerSeq
std::atomic< LedgerIndex > mValidLedgerSeq
Definition: LedgerMaster.h:387
ripple::LedgerMaster::getCurrentLedgerIndex
LedgerIndex getCurrentLedgerIndex()
Definition: LedgerMaster.cpp:206
ripple::LedgerHolder
Hold a ledger in a thread-safe way.
Definition: LedgerHolder.h:38
ripple::LedgerMaster::takeReplay
void takeReplay(std::unique_ptr< LedgerReplay > replay)
Definition: LedgerMaster.cpp:1768
ripple::LedgerMaster::mLastValidLedger
std::pair< uint256, LedgerIndex > mLastValidLedger
Definition: LedgerMaster.h:357
ripple::Rules
Rules controlling protocol behavior.
Definition: ReadView.h:131
ripple::LedgerMaster::m_stats
Stats m_stats
Definition: LedgerMaster.h:432
mutex
ripple::LedgerMaster::mShardLedger
std::shared_ptr< Ledger const > mShardLedger
Definition: LedgerMaster.h:354
ripple::LedgerMaster::updatePaths
void updatePaths(Job &job)
Definition: LedgerMaster.cpp:1395
std::size_t
ripple::LedgerMaster::storeLedger
bool storeLedger(std::shared_ptr< Ledger const > ledger)
Definition: LedgerMaster.cpp:510
ripple::InboundLedger::Reason
Reason
Definition: InboundLedger.h:51
ripple::RangeSet
boost::icl::interval_set< T, std::less, ClosedInterval< T > > RangeSet
A set of closed intervals over the domain T.
Definition: RangeSet.h:69
ripple::LedgerMaster::setLedgerRangePresent
void setLedgerRangePresent(std::uint32_t minV, std::uint32_t maxV)
Definition: LedgerMaster.cpp:1722
ripple::LedgerMaster::consensusBuilt
void consensusBuilt(std::shared_ptr< Ledger const > const &ledger, uint256 const &consensusHash, Json::Value consensus)
Report that the consensus process built a particular ledger.
Definition: LedgerMaster.cpp:1131
ripple::LedgerMaster::mValidLedger
LedgerHolder mValidLedger
Definition: LedgerMaster.h:342
ripple::LedgerMaster::fetch_seq_
std::uint32_t fetch_seq_
Definition: LedgerMaster.h:403
ripple::LedgerMaster::getHashBySeq
uint256 getHashBySeq(std::uint32_t index)
Get a ledger's hash by sequence number using the cache.
Definition: LedgerMaster.cpp:1592
ripple::LedgerMaster::findNewLedgersToPublish
std::vector< std::shared_ptr< Ledger const > > findNewLedgersToPublish(std::unique_lock< std::recursive_mutex > &)
Definition: LedgerMaster.cpp:1276
ripple::LedgerMaster::isCaughtUp
bool isCaughtUp(std::string &reason)
Definition: LedgerMaster.cpp:287
std::unique_ptr
STL class.
ripple::LedgerMaster::mPathFindThread
int mPathFindThread
Definition: LedgerMaster.h:378
ripple::LedgerMaster::mValidLedgerSign
std::atomic< std::uint32_t > mValidLedgerSign
Definition: LedgerMaster.h:386
ripple::LedgerMaster::setBuildingLedger
void setBuildingLedger(LedgerIndex index)
Definition: LedgerMaster.cpp:562
ripple::LedgerMaster::doAdvance
void doAdvance(std::unique_lock< std::recursive_mutex > &)
Definition: LedgerMaster.cpp:1904
ripple::LedgerMaster::tryAdvance
void tryAdvance()
Definition: LedgerMaster.cpp:1380
ripple::LedgerMaster::clearPriorLedgers
void clearPriorLedgers(LedgerIndex seq)
Definition: LedgerMaster.cpp:1754
ripple::LedgerMaster::setPubLedger
void setPubLedger(std::shared_ptr< Ledger const > const &l)
Definition: LedgerMaster.cpp:391
beast::abstract_clock< NetClock >::time_point
typename NetClock ::time_point time_point
Definition: abstract_clock.h:63
ripple::LedgerMaster::popAcctTransaction
std::shared_ptr< STTx const > popAcctTransaction(std::shared_ptr< STTx const > const &tx)
Get the next transaction held for a particular account if any.
Definition: LedgerMaster.cpp:547
beast::insight::Hook
A reference to a handler for performing polled collection.
Definition: Hook.h:31
ripple::LedgerMaster::tryFill
void tryFill(Job &job, std::shared_ptr< Ledger const > ledger)
Definition: LedgerMaster.cpp:665
ripple::LedgerMaster::getCacheHitRate
float getCacheHitRate()
Definition: LedgerMaster.cpp:1742
Json::Value
Represents a JSON value.
Definition: json_value.h:145
beast::insight::Gauge::set
void set(value_type value) const
Set the value on the gauge.
Definition: Gauge.h:68
ripple::LedgerMaster::m_mutex
std::recursive_mutex m_mutex
Definition: LedgerMaster.h:336
ripple::LedgerMaster::Stats
Definition: LedgerMaster.h:413
ripple::LedgerMaster::collect_metrics
void collect_metrics()
Definition: LedgerMaster.h:436
ripple::LedgerMaster::standalone_
const bool standalone_
Definition: LedgerMaster.h:391