diff options
author | James O'Beirne <james.obeirne@gmail.com> | 2019-07-24 13:39:42 -0400 |
---|---|---|
committer | James O'Beirne <james.obeirne@gmail.com> | 2019-08-15 11:19:40 -0400 |
commit | 582d2cd74754d6b9a2394616a9c82a89d2d71976 (patch) | |
tree | 6aca21d9b8481b465a74811fb9c2b97ddc9576c4 /src/validation.h | |
parent | 569353068568444a25b301bbd6513bb510157dc9 (diff) |
Cover UTXO set access with lock annotations
i.e. any CoinsViews members. Adds a lock acquisition to `gettxoutsetinfo` RPC
to comply with added annotations.
Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
Diffstat (limited to 'src/validation.h')
-rw-r--r-- | src/validation.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/validation.h b/src/validation.h index 2a268d8cab..65f86e3070 100644 --- a/src/validation.h +++ b/src/validation.h @@ -519,14 +519,14 @@ class CoinsViews { public: //! The lowest level of the CoinsViews cache hierarchy sits in a leveldb database on disk. //! All unspent coins reside in this store. - CCoinsViewDB m_dbview; + CCoinsViewDB m_dbview GUARDED_BY(cs_main); //! This view wraps access to the leveldb instance and handles read errors gracefully. - CCoinsViewErrorCatcher m_catcherview; + CCoinsViewErrorCatcher m_catcherview GUARDED_BY(cs_main); //! This is the top layer of the cache hierarchy - it keeps as many coins in memory as //! can fit per the dbcache setting. - std::unique_ptr<CCoinsViewCache> m_cacheview; + std::unique_ptr<CCoinsViewCache> m_cacheview GUARDED_BY(cs_main); //! This constructor initializes CCoinsViewDB and CCoinsViewErrorCatcher instances, but it //! *does not* create a CCoinsViewCache instance by default. This is done separately because the @@ -537,7 +537,7 @@ public: CoinsViews(std::string ldb_name, size_t cache_size_bytes, bool in_memory, bool should_wipe); //! Initialize the CCoinsViewCache member. - void InitCache(); + void InitCache() EXCLUSIVE_LOCKS_REQUIRED(::cs_main); }; /** @@ -609,11 +609,11 @@ public: //! Initialize the in-memory coins cache (to be done after the health of the on-disk database //! is verified). - void InitCoinsCache(); + void InitCoinsCache() EXCLUSIVE_LOCKS_REQUIRED(::cs_main); //! @returns whether or not the CoinsViews object has been fully initialized and we can //! safely flush this object to disk. - bool CanFlushToDisk() { + bool CanFlushToDisk() EXCLUSIVE_LOCKS_REQUIRED(cs_main) { return m_coins_views && m_coins_views->m_cacheview; } @@ -629,21 +629,21 @@ public: std::set<CBlockIndex*, CBlockIndexWorkComparator> setBlockIndexCandidates; //! @returns A reference to the in-memory cache of the UTXO set. - CCoinsViewCache& CoinsTip() + CCoinsViewCache& CoinsTip() EXCLUSIVE_LOCKS_REQUIRED(cs_main) { assert(m_coins_views->m_cacheview); return *m_coins_views->m_cacheview.get(); } //! @returns A reference to the on-disk UTXO set database. - CCoinsViewDB& CoinsDB() + CCoinsViewDB& CoinsDB() EXCLUSIVE_LOCKS_REQUIRED(cs_main) { return m_coins_views->m_dbview; } //! @returns A reference to a wrapped view of the in-memory UTXO set that //! handles disk read errors gracefully. - CCoinsViewErrorCatcher& CoinsErrorCatcher() + CCoinsViewErrorCatcher& CoinsErrorCatcher() EXCLUSIVE_LOCKS_REQUIRED(cs_main) { return m_coins_views->m_catcherview; } |