aboutsummaryrefslogtreecommitdiff
path: root/src/blockchain_db/lmdb/db_lmdb.cpp (follow)
AgeCommit message (Collapse)AuthorFilesLines
2015-07-12Check and resize if needed at batch transaction startwarptangent1-3/+105
This currently only affects blockchain_import and blockchain_converter. When the number of blocks expected for the batch transaction is provided, make an estimate of the DB space needed. If not enough free space remains, resize the DB. The estimate is made based on: - the average size of the last 500 blocks, or if larger, a min. block size of 4k - a factor for the expanded size a block occupies in the DB across the sub-dbs/tables - a safety factor (1.7) to allow for a "reasonable" average block size increase over the batch Increase the DB size by whichever is greater: the estimated size needed or a minimum increase size, currently 128 MB. The conservative factors in the estimate help in testing that the resize occurs when needed, and without gratuitous size increases. For common use, the safety factor and minimum increase size could reasonably be increased. For testing, setting DEFAULT_MAPSIZE (blockchain_db/lmdb/db_lmdb.h) to 1 << 27 (128 MB) and recompiling will ensure DB resizes take place sooner and more frequently.
2015-07-11Optionally allow DB to know expected number of blocks at batch transaction startwarptangent1-1/+1
This will assist in a DB resize check.
2015-05-30Merge pull request #297Riccardo Spagni1-38/+75
5680604 Replace hardcoded value with existing constant of same value (warptangent) f37ee2f Update database resize behavior (warptangent) f85cd8e Include database error in more error messages (warptangent)
2015-05-30Replace hardcoded value with existing constant of same valuewarptangent1-1/+1
This was likely the intent.
2015-05-30Update database resize behaviorwarptangent1-2/+20
On an existing database, don't set LMDB map size to be the initial size for a new database. Check if resize is needed at startup.
2015-05-30Include database error in more error messageswarptangent1-35/+54
2015-05-27blockchain_db: add a few constmoneromooo-monero1-3/+3
2015-05-26Merge pull request #289Riccardo Spagni1-23/+172
01076ae Check if LMDB needs resize every 1000 blocks (Thomas Winget) b0d849e null out batch txn pointer as needed (BlockchainLMDB) (Thomas Winget) 7b7ef73 LMDB should now dynamically resize the mapsize (Thomas Winget) ac79502 Move mdb_txn_safe implementation to cpp file (Thomas Winget)
2015-05-18Check if LMDB needs resize every 1000 blocksThomas Winget1-1/+1
(this was 10 for testing purposes)
2015-05-18null out batch txn pointer as needed (BlockchainLMDB)Thomas Winget1-4/+5
2015-05-16LMDB should now dynamically resize the mapsizeThomas Winget1-59/+153
Some filesystems (*cough* NTFS *cough*) aren't good with sparse files, so this makes LMDB dynamically resize its mapsize as needed. Note: the check interval is currently every 10 blocks (for testing) and will probably need to change to 1000 or something. Default mapsize set to 1GiB. Blockchain conversion tools using batching will probably segfault, I'll fix that in the next commit.
2015-05-16Allow BlockchainLMDB to be opened in read-only modewarptangent1-2/+6
Have blockchain_export use read-only mode when source is BlockchainLMDB.
2015-05-15Move mdb_txn_safe implementation to cpp fileThomas Winget1-0/+54
2015-05-08Update log statementswarptangent1-1/+1
Use filesystem path conversion to string() instead of c_str(). Windows may otherwise output an address.
2015-03-25Steps toward multiple dbs available -- workingThomas Winget1-7/+0
There will need to be some more refactoring for these changes to be considered complete/correct, but for now it's working. new daemon cli argument "--db-type", works for LMDB and BerkeleyDB. A good deal of refactoring is also present in this commit, namely Blockchain no longer instantiates BlockchainDB, but rather is passed a pointer to an already-instantiated BlockchainDB on init().
2015-03-17Pull blockchain changes into berkeleydb branchThomas Winget1-10/+16
2015-03-16Try to not pollute cryptonote namespaceThomas Winget1-36/+36
2015-03-16Add support for database open with flagswarptangent1-2/+1
Add support to: - BlockchainDB, BlockchainLMDB - blockchain_import utility to open LMDB database with one or more LMDB flags. Sample use: $ blockchain_import --database lmdb#nosync $ blockchain_import --database lmdb#nosync,nometasync
2015-03-16Add mdb_flags variable to LMDB database openwarptangent1-1/+2
2015-03-15Update and relocate comment that applies class widewarptangent1-8/+14
2015-03-13BlockchainDB implementations have names nowThomas Winget1-0/+7
In order to make things more general, BlockchainDB now has get_db_name() which should return a string with the "name" of that type of db. This "name" will be the subfolder name that holds that db type's files within the monero folder. Small bugfix: blockchain_converter was not correctly appending this in the prior hard-coded-string implementation of the subfolder data directory concept.
2015-03-06Moved BlockchainDB into its own src/ subfolderThomas Winget1-0/+1808
Ostensibly janitorial work, but should be more relevant later down the line. Things that depend on core cryptonote things (i.e. cryptonote_core) don't necessarily depend on BlockchainDB and thus have no need to have BlockchainDB baked in with them.