rippled
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
ripple::NodeStore::DatabaseShard Class Referenceabstract

A collection of historical shards. More...

Inheritance diagram for ripple::NodeStore::DatabaseShard:
Inheritance graph
[legend]
Collaboration diagram for ripple::NodeStore::DatabaseShard:
Collaboration graph
[legend]

Public Member Functions

 DatabaseShard (Scheduler &scheduler, int readThreads, Section const &config, beast::Journal journal)
 Construct a shard store. More...
 
virtual bool init ()=0
 Initialize the database. More...
 
virtual std::optional< std::uint32_tprepareLedger (std::uint32_t validLedgerSeq)=0
 Prepare to store a new ledger in the shard being acquired. More...
 
virtual bool prepareShards (std::vector< std::uint32_t > const &shardIndexes)=0
 Prepare one or more shard indexes to be imported into the database. More...
 
virtual void removePreShard (std::uint32_t shardIndex)=0
 Remove a previously prepared shard index for import. More...
 
virtual std::string getPreShards ()=0
 Get shard indexes being imported. More...
 
virtual bool importShard (std::uint32_t shardIndex, boost::filesystem::path const &srcDir)=0
 Import a shard from the shard archive handler into the shard database. More...
 
virtual std::shared_ptr< LedgerfetchLedger (uint256 const &hash, std::uint32_t seq)=0
 Fetch a ledger from the shard store. More...
 
virtual void setStored (std::shared_ptr< Ledger const > const &ledger)=0
 Notifies the database that the given ledger has been fully acquired and stored. More...
 
virtual bool callForLedgerSQLByLedgerSeq (LedgerIndex ledgerSeq, std::function< bool(soci::session &session)> const &callback)=0
 Invoke a callback on the SQLite db holding the corresponding ledger. More...
 
virtual bool callForLedgerSQLByShardIndex (std::uint32_t shardIndex, std::function< bool(soci::session &session)> const &callback)=0
 Invoke a callback on the ledger SQLite db for the corresponding shard. More...
 
virtual bool callForTransactionSQLByLedgerSeq (LedgerIndex ledgerSeq, std::function< bool(soci::session &session)> const &callback)=0
 Invoke a callback on the transaction SQLite db for the corresponding ledger. More...
 
virtual bool callForTransactionSQLByShardIndex (std::uint32_t shardIndex, std::function< bool(soci::session &session)> const &callback)=0
 Invoke a callback on the transaction SQLite db for the corresponding shard. More...
 
virtual bool iterateLedgerSQLsForward (std::optional< std::uint32_t > minShardIndex, std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &callback)=0
 iterateLedgerSQLsForward Checks out ledger databases for all shards in ascending order starting from given shard index until shard with the largest index visited or callback returned false. More...
 
virtual bool iterateTransactionSQLsForward (std::optional< std::uint32_t > minShardIndex, std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &callback)=0
 iterateTransactionSQLsForward Checks out transaction databases for all shards in ascending order starting from given shard index until shard with the largest index visited or callback returned false. More...
 
virtual bool iterateLedgerSQLsBack (std::optional< std::uint32_t > maxShardIndex, std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &callback)=0
 iterateLedgerSQLsBack Checks out ledger databases for all shards in descending order starting from given shard index until shard with the smallest index visited or callback returned false. More...
 
virtual bool iterateTransactionSQLsBack (std::optional< std::uint32_t > maxShardIndex, std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &callback)=0
 iterateTransactionSQLsBack Checks out transaction databases for all shards in descending order starting from given shard index until shard with the smallest index visited or callback returned false. More...
 
virtual std::unique_ptr< ShardInfogetShardInfo () const =0
 Query information about shards held. More...
 
virtual boost::filesystem::path const & getRootDir () const =0
 Returns the root database directory. More...
 
virtual Json::Value getDatabaseImportStatus () const =0
 Returns a JSON object detailing the status of an ongoing database import if one is running, otherwise an error object. More...
 
virtual Json::Value startNodeToShard ()=0
 Initiates a NodeStore to ShardStore import and returns the result in a JSON object. More...
 
virtual Json::Value stopNodeToShard ()=0
 Terminates a NodeStore to ShardStore import and returns the result in a JSON object. More...
 
virtual std::optional< std::uint32_tgetDatabaseImportSequence () const =0
 Returns the first ledger sequence of the shard currently being imported from the NodeStore. More...
 
virtual size_t getNumTasks () const =0
 Returns the number of queued tasks. More...
 
virtual std::string getName () const =0
 Retrieve the name associated with this backend. More...
 
virtual void importDatabase (Database &source)=0
 Import objects from another database. More...
 
virtual std::int32_t getWriteLoad () const =0
 Retrieve the estimated number of pending write operations. More...
 
virtual void store (NodeObjectType type, Blob &&data, uint256 const &hash, std::uint32_t ledgerSeq)=0
 Store the object. More...
 
virtual bool isSameDB (std::uint32_t s1, std::uint32_t s2)=0
 
virtual void sync ()=0
 
std::shared_ptr< NodeObjectfetchNodeObject (uint256 const &hash, std::uint32_t ledgerSeq=0, FetchType fetchType=FetchType::synchronous, bool duplicate=false)
 Fetch a node object. More...
 
virtual void asyncFetch (uint256 const &hash, std::uint32_t ledgerSeq, std::function< void(std::shared_ptr< NodeObject > const &)> &&callback)
 Fetch an object without waiting. More...
 
virtual bool storeLedger (std::shared_ptr< Ledger const > const &srcLedger)=0
 Store a ledger from a different database. More...
 
virtual void sweep ()=0
 Remove expired entries from the positive and negative caches. More...
 
std::uint64_t getStoreCount () const
 Gather statistics pertaining to read and write activities. More...
 
std::uint32_t getFetchTotalCount () const
 
std::uint32_t getFetchHitCount () const
 
std::uint64_t getStoreSize () const
 
std::uint32_t getFetchSize () const
 
void getCountsJson (Json::Value &obj)
 
int fdRequired () const
 Returns the number of file descriptors the database expects to need. More...
 
virtual void stop ()
 
bool isStopping () const
 
std::uint32_t ledgersPerShard () const noexcept
 
std::uint32_t earliestLedgerSeq () const noexcept
 
std::uint32_t earliestShardIndex () const noexcept
 
std::uint32_t firstLedgerSeq (std::uint32_t shardIndex) const noexcept
 Calculates the first ledger sequence for a given shard index. More...
 
std::uint32_t lastLedgerSeq (std::uint32_t shardIndex) const noexcept
 Calculates the last ledger sequence for a given shard index. More...
 
std::uint32_t seqToShardIndex (std::uint32_t ledgerSeq) const noexcept
 Calculates the shard index for a given ledger sequence. More...
 
std::uint32_t maxLedgers (std::uint32_t shardIndex) const noexcept
 Calculates the maximum ledgers for a given shard index. More...
 

Protected Member Functions

bool storeLedger (Ledger const &srcLedger, std::shared_ptr< Backend > dstBackend)
 
void storeStats (std::uint64_t count, std::uint64_t sz)
 
void importInternal (Backend &dstBackend, Database &srcDB)
 
void updateFetchMetrics (uint64_t fetches, uint64_t hits, uint64_t duration)
 

Protected Attributes

const beast::Journal j_
 
Schedulerscheduler_
 
int fdRequired_ {0}
 
std::atomic< std::uint32_tfetchHitCount_ {0}
 
std::atomic< std::uint32_tfetchSz_ {0}
 
const std::uint32_t ledgersPerShard_
 
const std::uint32_t earliestLedgerSeq_
 
const std::uint32_t earliestShardIndex_
 
const int requestBundle_
 

Private Member Functions

virtual std::shared_ptr< NodeObjectfetchNodeObject (uint256 const &hash, std::uint32_t ledgerSeq, FetchReport &fetchReport, bool duplicate)=0
 
virtual void for_each (std::function< void(std::shared_ptr< NodeObject >)> f)=0
 Visit every object in the database This is usually called during import. More...
 
virtual std::optional< Backend::Counters< std::uint64_t > > getCounters () const
 Retrieve backend read and write stats. More...
 
void threadEntry ()
 

Private Attributes

std::atomic< std::uint64_tstoreCount_ {0}
 
std::atomic< std::uint64_tstoreSz_ {0}
 
std::atomic< std::uint64_tfetchTotalCount_ {0}
 
std::atomic< std::uint64_tfetchDurationUs_ {0}
 
std::atomic< std::uint64_tstoreDurationUs_ {0}
 
std::mutex readLock_
 
std::condition_variable readCondVar_
 
std::map< uint256, std::vector< std::pair< std::uint32_t, std::function< void(std::shared_ptr< NodeObject > const &)> > > > read_
 
std::atomic< bool > readStopping_ = false
 
std::atomic< int > readThreads_ = 0
 
std::atomic< int > runningThreads_ = 0
 

Detailed Description

A collection of historical shards.

Definition at line 37 of file DatabaseShard.h.

Constructor & Destructor Documentation

◆ DatabaseShard()

ripple::NodeStore::DatabaseShard::DatabaseShard ( Scheduler scheduler,
int  readThreads,
Section const &  config,
beast::Journal  journal 
)

Construct a shard store.

Parameters
schedulerThe scheduler to use for performing asynchronous tasks
readThreadsThe number of asynchronous read threads to create
configThe shard configuration section for the database
journalDestination for logging output

Definition at line 47 of file DatabaseShard.h.

Member Function Documentation

◆ init()

virtual bool ripple::NodeStore::DatabaseShard::init ( )
pure virtual

Initialize the database.

Returns
true if the database initialized without error

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ prepareLedger()

virtual std::optional<std::uint32_t> ripple::NodeStore::DatabaseShard::prepareLedger ( std::uint32_t  validLedgerSeq)
pure virtual

Prepare to store a new ledger in the shard being acquired.

Parameters
validLedgerSeqThe sequence of the maximum valid ledgers
Returns
If a ledger should be fetched and stored, then returns the ledger sequence of the ledger to request. Otherwise returns std::nullopt. Some reasons this may return std::nullopt are: all shards are stored and full, max allowed disk space would be exceeded, or a ledger was recently requested and not enough time has passed between requests. @implNote adds a new writable shard if necessary

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ prepareShards()

virtual bool ripple::NodeStore::DatabaseShard::prepareShards ( std::vector< std::uint32_t > const &  shardIndexes)
pure virtual

Prepare one or more shard indexes to be imported into the database.

Parameters
shardIndexesShard indexes to be prepared for import
Returns
true if all shard indexes successfully prepared for import

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ removePreShard()

virtual void ripple::NodeStore::DatabaseShard::removePreShard ( std::uint32_t  shardIndex)
pure virtual

Remove a previously prepared shard index for import.

Parameters
shardIndexShard index to be removed from import

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getPreShards()

virtual std::string ripple::NodeStore::DatabaseShard::getPreShards ( )
pure virtual

Get shard indexes being imported.

Returns
a string representing the shards prepared for import

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ importShard()

virtual bool ripple::NodeStore::DatabaseShard::importShard ( std::uint32_t  shardIndex,
boost::filesystem::path const &  srcDir 
)
pure virtual

Import a shard from the shard archive handler into the shard database.

This differs from 'importDatabase' which imports the contents of the NodeStore

Parameters
shardIndexShard index to import
srcDirThe directory to import from
Returns
true If the shard was successfully imported @implNote if successful, srcDir is moved to the database directory

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ fetchLedger()

virtual std::shared_ptr<Ledger> ripple::NodeStore::DatabaseShard::fetchLedger ( uint256 const &  hash,
std::uint32_t  seq 
)
pure virtual

Fetch a ledger from the shard store.

Parameters
hashThe key of the ledger to retrieve
seqThe sequence of the ledger
Returns
The ledger if found, nullptr otherwise

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ setStored()

virtual void ripple::NodeStore::DatabaseShard::setStored ( std::shared_ptr< Ledger const > const &  ledger)
pure virtual

Notifies the database that the given ledger has been fully acquired and stored.

Parameters
ledgerThe stored ledger to be marked as complete

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ callForLedgerSQLByLedgerSeq()

virtual bool ripple::NodeStore::DatabaseShard::callForLedgerSQLByLedgerSeq ( LedgerIndex  ledgerSeq,
std::function< bool(soci::session &session)> const &  callback 
)
pure virtual

Invoke a callback on the SQLite db holding the corresponding ledger.

Returns
Value returned by callback function.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ callForLedgerSQLByShardIndex()

virtual bool ripple::NodeStore::DatabaseShard::callForLedgerSQLByShardIndex ( std::uint32_t  shardIndex,
std::function< bool(soci::session &session)> const &  callback 
)
pure virtual

Invoke a callback on the ledger SQLite db for the corresponding shard.

Returns
Value returned by callback function.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ callForTransactionSQLByLedgerSeq()

virtual bool ripple::NodeStore::DatabaseShard::callForTransactionSQLByLedgerSeq ( LedgerIndex  ledgerSeq,
std::function< bool(soci::session &session)> const &  callback 
)
pure virtual

Invoke a callback on the transaction SQLite db for the corresponding ledger.

Returns
Value returned by callback function.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ callForTransactionSQLByShardIndex()

virtual bool ripple::NodeStore::DatabaseShard::callForTransactionSQLByShardIndex ( std::uint32_t  shardIndex,
std::function< bool(soci::session &session)> const &  callback 
)
pure virtual

Invoke a callback on the transaction SQLite db for the corresponding shard.

Returns
Value returned by callback function.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ iterateLedgerSQLsForward()

virtual bool ripple::NodeStore::DatabaseShard::iterateLedgerSQLsForward ( std::optional< std::uint32_t minShardIndex,
std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &  callback 
)
pure virtual

iterateLedgerSQLsForward Checks out ledger databases for all shards in ascending order starting from given shard index until shard with the largest index visited or callback returned false.

For each visited shard calls given callback function passing shard index and session with the database to it.

Parameters
minShardIndexStart shard index to visit or none if all shards should be visited.
callbackCallback function to call.
Returns
True if each callback function returns true, false otherwise.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ iterateTransactionSQLsForward()

virtual bool ripple::NodeStore::DatabaseShard::iterateTransactionSQLsForward ( std::optional< std::uint32_t minShardIndex,
std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &  callback 
)
pure virtual

iterateTransactionSQLsForward Checks out transaction databases for all shards in ascending order starting from given shard index until shard with the largest index visited or callback returned false.

For each visited shard calls given callback function passing shard index and session with the database to it.

Parameters
minShardIndexStart shard index to visit or none if all shards should be visited.
callbackCallback function to call.
Returns
True if each callback function returns true, false otherwise.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ iterateLedgerSQLsBack()

virtual bool ripple::NodeStore::DatabaseShard::iterateLedgerSQLsBack ( std::optional< std::uint32_t maxShardIndex,
std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &  callback 
)
pure virtual

iterateLedgerSQLsBack Checks out ledger databases for all shards in descending order starting from given shard index until shard with the smallest index visited or callback returned false.

For each visited shard calls given callback function passing shard index and session with the database to it.

Parameters
maxShardIndexStart shard index to visit or none if all shards should be visited.
callbackCallback function to call.
Returns
True if each callback function returns true, false otherwise.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ iterateTransactionSQLsBack()

virtual bool ripple::NodeStore::DatabaseShard::iterateTransactionSQLsBack ( std::optional< std::uint32_t maxShardIndex,
std::function< bool(soci::session &session, std::uint32_t shardIndex)> const &  callback 
)
pure virtual

iterateTransactionSQLsBack Checks out transaction databases for all shards in descending order starting from given shard index until shard with the smallest index visited or callback returned false.

For each visited shard calls given callback function passing shard index and session with the database to it.

Parameters
maxShardIndexStart shard index to visit or none if all shards should be visited.
callbackCallback function to call.
Returns
True if each callback function returns true, false otherwise.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getShardInfo()

virtual std::unique_ptr<ShardInfo> ripple::NodeStore::DatabaseShard::getShardInfo ( ) const
pure virtual

Query information about shards held.

Returns
Information about shards held by this node

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getRootDir()

virtual boost::filesystem::path const& ripple::NodeStore::DatabaseShard::getRootDir ( ) const
pure virtual

Returns the root database directory.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getDatabaseImportStatus()

virtual Json::Value ripple::NodeStore::DatabaseShard::getDatabaseImportStatus ( ) const
pure virtual

Returns a JSON object detailing the status of an ongoing database import if one is running, otherwise an error object.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ startNodeToShard()

virtual Json::Value ripple::NodeStore::DatabaseShard::startNodeToShard ( )
pure virtual

Initiates a NodeStore to ShardStore import and returns the result in a JSON object.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ stopNodeToShard()

virtual Json::Value ripple::NodeStore::DatabaseShard::stopNodeToShard ( )
pure virtual

Terminates a NodeStore to ShardStore import and returns the result in a JSON object.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getDatabaseImportSequence()

virtual std::optional<std::uint32_t> ripple::NodeStore::DatabaseShard::getDatabaseImportSequence ( ) const
pure virtual

Returns the first ledger sequence of the shard currently being imported from the NodeStore.

Returns
The ledger sequence or an unseated value if no import is running

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getNumTasks()

virtual size_t ripple::NodeStore::DatabaseShard::getNumTasks ( ) const
pure virtual

Returns the number of queued tasks.

Implemented in ripple::NodeStore::DatabaseShardImp.

◆ getName()

virtual std::string ripple::NodeStore::Database::getName ( ) const
pure virtualinherited

Retrieve the name associated with this backend.

This is used for diagnostics and may not reflect the actual path or paths used by the underlying backend.

Implemented in ripple::NodeStore::DatabaseShardImp, ripple::NodeStore::DatabaseNodeImp, and ripple::NodeStore::DatabaseRotatingImp.

◆ importDatabase()

virtual void ripple::NodeStore::Database::importDatabase ( Database source)
pure virtualinherited

◆ getWriteLoad()

virtual std::int32_t ripple::NodeStore::Database::getWriteLoad ( ) const
pure virtualinherited

Retrieve the estimated number of pending write operations.

This is used for diagnostics.

Implemented in ripple::NodeStore::DatabaseShardImp, ripple::NodeStore::DatabaseNodeImp, and ripple::NodeStore::DatabaseRotatingImp.

◆ store()

virtual void ripple::NodeStore::Database::store ( NodeObjectType  type,
Blob &&  data,
uint256 const &  hash,
std::uint32_t  ledgerSeq 
)
pure virtualinherited

Store the object.

The caller's Blob parameter is overwritten.

Parameters
typeThe type of object.
dataThe payload of the object. The caller's variable is overwritten.
hashThe 256-bit hash of the payload data.
ledgerSeqThe sequence of the ledger the object belongs to.
Returns
true if the object was stored?

Implemented in ripple::NodeStore::DatabaseNodeImp, ripple::NodeStore::DatabaseRotatingImp, and ripple::NodeStore::DatabaseShardImp.

◆ isSameDB()

virtual bool ripple::NodeStore::Database::isSameDB ( std::uint32_t  s1,
std::uint32_t  s2 
)
pure virtualinherited

◆ sync()

virtual void ripple::NodeStore::Database::sync ( )
pure virtualinherited

◆ fetchNodeObject() [1/2]

std::shared_ptr< NodeObject > ripple::NodeStore::Database::fetchNodeObject ( uint256 const &  hash,
std::uint32_t  ledgerSeq = 0,
FetchType  fetchType = FetchType::synchronous,
bool  duplicate = false 
)
inherited

Fetch a node object.

If the object is known to be not in the database, isn't found in the database during the fetch, or failed to load correctly during the fetch, nullptr is returned.

Note
This can be called concurrently.
Parameters
hashThe key of the object to retrieve.
ledgerSeqThe sequence of the ledger where the object is stored.
fetchTypethe type of fetch, synchronous or asynchronous.
Returns
The object, or nullptr if it couldn't be retrieved.

Definition at line 252 of file Database.cpp.

◆ fetchNodeObject() [2/2]

virtual std::shared_ptr<NodeObject> ripple::NodeStore::Database::fetchNodeObject ( uint256 const &  hash,
std::uint32_t  ledgerSeq,
FetchReport fetchReport,
bool  duplicate 
)
privatepure virtualinherited

◆ asyncFetch()

void ripple::NodeStore::Database::asyncFetch ( uint256 const &  hash,
std::uint32_t  ledgerSeq,
std::function< void(std::shared_ptr< NodeObject > const &)> &&  callback 
)
virtualinherited

Fetch an object without waiting.

If I/O is required to determine whether or not the object is present, false is returned. Otherwise, true is returned and object is set to refer to the object, or nullptr if the object is not present. If I/O is required, the I/O is scheduled and true is returned

Note
This can be called concurrently.
Parameters
hashThe key of the object to retrieve
ledgerSeqThe sequence of the ledger where the object is stored, used by the shard store.
callbackCallback function when read completes

Reimplemented in ripple::NodeStore::DatabaseNodeImp.

Definition at line 198 of file Database.cpp.

◆ storeLedger() [1/2]

virtual bool ripple::NodeStore::Database::storeLedger ( std::shared_ptr< Ledger const > const &  srcLedger)
pure virtualinherited

Store a ledger from a different database.

Parameters
srcLedgerThe ledger to store.
Returns
true if the operation was successful

Implemented in ripple::NodeStore::DatabaseNodeImp, ripple::NodeStore::DatabaseShardImp, and ripple::NodeStore::DatabaseRotatingImp.

◆ storeLedger() [2/2]

bool ripple::NodeStore::Database::storeLedger ( Ledger const &  srcLedger,
std::shared_ptr< Backend dstBackend 
)
protectedinherited

Definition at line 279 of file Database.cpp.

◆ sweep()

virtual void ripple::NodeStore::Database::sweep ( )
pure virtualinherited

Remove expired entries from the positive and negative caches.

Implemented in ripple::NodeStore::DatabaseNodeImp, ripple::NodeStore::DatabaseShardImp, and ripple::NodeStore::DatabaseRotatingImp.

◆ getStoreCount()

std::uint64_t ripple::NodeStore::Database::getStoreCount ( ) const
inherited

Gather statistics pertaining to read and write activities.

Parameters
objJson object reference into which to place counters.

Definition at line 182 of file Database.h.

◆ getFetchTotalCount()

std::uint32_t ripple::NodeStore::Database::getFetchTotalCount ( ) const
inherited

Definition at line 188 of file Database.h.

◆ getFetchHitCount()

std::uint32_t ripple::NodeStore::Database::getFetchHitCount ( ) const
inherited

Definition at line 194 of file Database.h.

◆ getStoreSize()

std::uint64_t ripple::NodeStore::Database::getStoreSize ( ) const
inherited

Definition at line 200 of file Database.h.

◆ getFetchSize()

std::uint32_t ripple::NodeStore::Database::getFetchSize ( ) const
inherited

Definition at line 206 of file Database.h.

◆ getCountsJson()

void ripple::NodeStore::Database::getCountsJson ( Json::Value obj)
inherited

Definition at line 378 of file Database.cpp.

◆ fdRequired()

int ripple::NodeStore::Database::fdRequired ( ) const
inherited

Returns the number of file descriptors the database expects to need.

Definition at line 216 of file Database.h.

◆ stop()

void ripple::NodeStore::Database::stop ( )
virtualinherited

Reimplemented in ripple::NodeStore::DatabaseShardImp.

Definition at line 165 of file Database.cpp.

◆ isStopping()

bool ripple::NodeStore::Database::isStopping ( ) const
inherited

Definition at line 146 of file Database.cpp.

◆ ledgersPerShard()

std::uint32_t ripple::NodeStore::Database::ledgersPerShard ( ) const
noexceptinherited
Returns
The maximum number of ledgers stored in a shard

Definition at line 230 of file Database.h.

◆ earliestLedgerSeq()

std::uint32_t ripple::NodeStore::Database::earliestLedgerSeq ( ) const
noexceptinherited
Returns
The earliest ledger sequence allowed

Definition at line 238 of file Database.h.

◆ earliestShardIndex()

std::uint32_t ripple::NodeStore::Database::earliestShardIndex ( ) const
noexceptinherited
Returns
The earliest shard index

Definition at line 246 of file Database.h.

◆ firstLedgerSeq()

std::uint32_t ripple::NodeStore::Database::firstLedgerSeq ( std::uint32_t  shardIndex) const
noexceptinherited

Calculates the first ledger sequence for a given shard index.

Parameters
shardIndexThe shard index considered
Returns
The first ledger sequence pertaining to the shard index

Definition at line 257 of file Database.h.

◆ lastLedgerSeq()

std::uint32_t ripple::NodeStore::Database::lastLedgerSeq ( std::uint32_t  shardIndex) const
noexceptinherited

Calculates the last ledger sequence for a given shard index.

Parameters
shardIndexThe shard index considered
Returns
The last ledger sequence pertaining to the shard index

Definition at line 271 of file Database.h.

◆ seqToShardIndex()

std::uint32_t ripple::NodeStore::Database::seqToShardIndex ( std::uint32_t  ledgerSeq) const
noexceptinherited

Calculates the shard index for a given ledger sequence.

Parameters
ledgerSeqledger sequence
Returns
The shard index of the ledger sequence

Definition at line 283 of file Database.h.

◆ maxLedgers()

std::uint32_t ripple::NodeStore::Database::maxLedgers ( std::uint32_t  shardIndex) const
noexceptinherited

Calculates the maximum ledgers for a given shard index.

Parameters
shardIndexThe shard index considered
Returns
The maximum ledgers pertaining to the shard index
Note
The earliest shard may store less if the earliest ledger sequence truncates its beginning

Definition at line 152 of file Database.cpp.

◆ storeStats()

void ripple::NodeStore::Database::storeStats ( std::uint64_t  count,
std::uint64_t  sz 
)
protectedinherited

Definition at line 333 of file Database.h.

◆ importInternal()

void ripple::NodeStore::Database::importInternal ( Backend dstBackend,
Database srcDB 
)
protectedinherited

Definition at line 213 of file Database.cpp.

◆ updateFetchMetrics()

void ripple::NodeStore::Database::updateFetchMetrics ( uint64_t  fetches,
uint64_t  hits,
uint64_t  duration 
)
protectedinherited

Definition at line 349 of file Database.h.

◆ for_each()

virtual void ripple::NodeStore::Database::for_each ( std::function< void(std::shared_ptr< NodeObject >)>  f)
privatepure virtualinherited

Visit every object in the database This is usually called during import.

Note
This routine will not be called concurrently with itself or other methods.
See also
import

Implemented in ripple::NodeStore::DatabaseShardImp, ripple::NodeStore::DatabaseNodeImp, and ripple::NodeStore::DatabaseRotatingImp.

◆ getCounters()

virtual std::optional<Backend::Counters<std::uint64_t> > ripple::NodeStore::Database::getCounters ( ) const
privatevirtualinherited

Retrieve backend read and write stats.

Note
The Counters struct is specific to and only used by CassandraBackend.

Reimplemented in ripple::NodeStore::DatabaseNodeImp.

Definition at line 401 of file Database.h.

◆ threadEntry()

void ripple::NodeStore::Database::threadEntry ( )
privateinherited

Member Data Documentation

◆ j_

const beast::Journal ripple::NodeStore::Database::j_
protectedinherited

Definition at line 301 of file Database.h.

◆ scheduler_

Scheduler& ripple::NodeStore::Database::scheduler_
protectedinherited

Definition at line 302 of file Database.h.

◆ fdRequired_

int ripple::NodeStore::Database::fdRequired_ {0}
protectedinherited

Definition at line 303 of file Database.h.

◆ fetchHitCount_

std::atomic<std::uint32_t> ripple::NodeStore::Database::fetchHitCount_ {0}
protectedinherited

Definition at line 305 of file Database.h.

◆ fetchSz_

std::atomic<std::uint32_t> ripple::NodeStore::Database::fetchSz_ {0}
protectedinherited

Definition at line 306 of file Database.h.

◆ ledgersPerShard_

const std::uint32_t ripple::NodeStore::Database::ledgersPerShard_
protectedinherited

Definition at line 314 of file Database.h.

◆ earliestLedgerSeq_

const std::uint32_t ripple::NodeStore::Database::earliestLedgerSeq_
protectedinherited

Definition at line 322 of file Database.h.

◆ earliestShardIndex_

const std::uint32_t ripple::NodeStore::Database::earliestShardIndex_
protectedinherited

Definition at line 325 of file Database.h.

◆ requestBundle_

const int ripple::NodeStore::Database::requestBundle_
protectedinherited

Definition at line 330 of file Database.h.

◆ storeCount_

std::atomic<std::uint64_t> ripple::NodeStore::Database::storeCount_ {0}
privateinherited

Definition at line 357 of file Database.h.

◆ storeSz_

std::atomic<std::uint64_t> ripple::NodeStore::Database::storeSz_ {0}
privateinherited

Definition at line 358 of file Database.h.

◆ fetchTotalCount_

std::atomic<std::uint64_t> ripple::NodeStore::Database::fetchTotalCount_ {0}
privateinherited

Definition at line 359 of file Database.h.

◆ fetchDurationUs_

std::atomic<std::uint64_t> ripple::NodeStore::Database::fetchDurationUs_ {0}
privateinherited

Definition at line 360 of file Database.h.

◆ storeDurationUs_

std::atomic<std::uint64_t> ripple::NodeStore::Database::storeDurationUs_ {0}
privateinherited

Definition at line 361 of file Database.h.

◆ readLock_

std::mutex ripple::NodeStore::Database::readLock_
mutableprivateinherited

Definition at line 363 of file Database.h.

◆ readCondVar_

std::condition_variable ripple::NodeStore::Database::readCondVar_
privateinherited

Definition at line 364 of file Database.h.

◆ read_

std::map< uint256, std::vector<std::pair< std::uint32_t, std::function<void(std::shared_ptr<NodeObject> const&)> > > > ripple::NodeStore::Database::read_
privateinherited

Definition at line 372 of file Database.h.

◆ readStopping_

std::atomic<bool> ripple::NodeStore::Database::readStopping_ = false
privateinherited

Definition at line 374 of file Database.h.

◆ readThreads_

std::atomic<int> ripple::NodeStore::Database::readThreads_ = 0
privateinherited

Definition at line 375 of file Database.h.

◆ runningThreads_

std::atomic<int> ripple::NodeStore::Database::runningThreads_ = 0
privateinherited

Definition at line 376 of file Database.h.