0.8 #6909
Closed
Commits
Show all changes
78 commits
Select commit
Hold shift + click to select a range
7cc960f
Truncate oversize 'tx' messages before relaying/storing.
petertodd 65c20db
Dump addresses every 15 minutes instead of 10 seconds
sipa 40809ae
Bump version numbers for 0.8.3 release
gavinandresen 6929f2a
Bump version numbers to prep for 0.8.4 release
gavinandresen 6f315b4
Fix Gnome bitcoin: URI handler
gavinandresen 38863af
Fix multi-block reorg transaction resurrection
TheBlueMatt cdb3441
Make RPC password resistant to timing attacks
gavinandresen 08dd920
Revert "Truncate oversize 'tx' messages before relaying/storing."
gavinandresen 21696c1
Simplify storage of orphan transactions
gavinandresen 20b6117
Checkpoint at block 250,000
gavinandresen 5c739c5
Remove inline LevelDB to prepare for git-subtree version
sipa cb1e39f
Squashed 'src/leveldb/' content from commit a02ddf9
sipa e6552ee
Merge commit 'cb1e39f0a35cc2b36fb748c26f69cd27e0ed5332' as 'src/leveldb'
sipa 6519339
Squashed 'src/leveldb/' changes from a02ddf9..be1b0ff
sipa 980b1c3
Merge commit '6519339fe849bdbbff047d9eef8ab6c5fbb3e2a4'
sipa 708c75c
fixed: include boost header as necessary
5e18c6c
fixed: don't use thread::sleep_for where it's known to be broken
ac7c960
Performance optimization for bloom filters.
gmaxwell d7fdc5f
Fix non-standard disconnected transactions causing mempool orphans
sipa 839c7d1
Update the bloom state on the real object, not the temporary one.
gmaxwell f0a1d87
Longer term workaround for chainstate corruption from negative versions.
gmaxwell 27fefea
Fix out-of-bounds check
sipa ef14a26
Bump version numbers for 0.8.5 release
gavinandresen 7084756
process received messages one at a time without sleeping between mess…
pstratem 5c55bf5
Fix comparison tool by asking for blocks more aggressively
TheBlueMatt 3e89dbb
Fix uninitialized variable added in 5c55bf5
c4892eb
Log reason for non-standard transaction rejection
f46f128
More fixes for blockchain corruption on OSX.
gmaxwell 633d95e
log start and end of Shutdown()
05ea790
make -logtimestamps default on and rework help-message
068996d
osx: fix bitcoin-qt startup crash when clicking dock icon
99f73bd
Fix build date for from-tarball builds
sipa f607729
exclude CreatePidFile() function on WIN32 as it is unused
0119e0c
Hurricane Electric uses block 2001:470::, not 2011:470::
dajohi e88eb41
Porting MinGW multithreading bugfix to makefile.mingw
phelixbtc e4be09c
Bump version numbers for 0.8.6 release
laanwj 83efc91
Squashed 'src/leveldb/' changes from be1b0ff..be91006
laanwj e564297
Silence useless warning in src/json/json_spirit_writer_template.h to …
wtogami 3779de9
special case DoS value == 0 in ProcessMessage()
56ce843
Refactor: pull alert string sanitization into util
gavinandresen 1c53d0a
Add some additional logging to give extra network insight.
7120d76
Store and use a sanitized subVer
5c02963
Increase default -blockmaxsize/prioritysize to 300K/30K
gavinandresen 1ca8a75
Remove CENT-output free transaction rule when relaying
gavinandresen 9612e4c
Lower maximum size for free transaction creation
gavinandresen 187f8a5
Explictly cast calculation to int, to allow std::max to work.
robbak 1b350f2
fix invalid conversion error with MinGW 4.8.1 in net.cpp
89c2ea0
Bugfix: Move boost/version include from db.cpp to walletdb.cpp where …
luke-jr df238b1
Add missing 0x prefix in chainparams.cpp
r000n 138705a
Create parent directories if needed in GetDataDir
laanwj 901ae4b
fix comment about dust logic
cozz c9c67b0
Update HomeBrew osx makefile patch to account for recent changes to m…
fanquake d3fe7c4
Make the rand tests determinstic. (fixes #2714)
gmaxwell 96896a0
Add wtogami to gitian download scripts.
wtogami daf9e46
Made the build/release process completable verbatim as listed in
98289bb
Fix typo in README.md
maaku 9f7fc8b
fix typo in README.md
codler 27e35bf
fix memory leak in CKey::SetCompactSignature()
bytemaster 6f21e73
Fix memory leak on exception in Key::SignCompact
bytemaster df0f6d0
Don't attempt to resize vector to negative size.
robbak bfb0856
Bitcoin-Qt: Fix display of window when bitcoin: URI is opened
3b8868d
Fix typo in a comment: it's base58, not base48.
a0a5b20
release notes: add warning about 32-bit systems
laanwj 22db46c
Fix typo: make default maxblocksize 350k (not 300)
gavinandresen 8c3ba8b
qt: use deleteLater to remove send entries
laanwj 1eb11e3
Prevent empty transactions from being added to vtxPrev
laanwj ec93d0a
Refuse to retransmit transactions without vins
laanwj d3381e7
leveldb: Use native Darwin memory barriers
5f553f8
dont use mmap in leveldb, this is a marginal performance hit
pstratem 77f7bcb
LevelDB: use PosixWriteableFile only on MacOS X
wtogami 03a7d67
Release notes for 0.8.6
laanwj f4134ee
consensus: guard against openssl's new strict DER checks
theuni 91e1332
fail immediately on an empty signature
theuni f19dded
Improve robustness of DER recoding code
laanwj da7ba59
Implement BIP 66 validation rules and switchover logic
sipa 6690ef7
Backport of some of BIP66's tests
sipa 534e6da
Raise version of created blocks, and enforce DERSIG in mempool
sipa 9d11aba
Merge #5765: Implement BIP66 (0.8)
laanwj
Jump to file or symbol
Failed to load files and symbols.
| @@ -0,0 +1,131 @@ | ||
| +-----BEGIN PGP PUBLIC KEY BLOCK----- | ||
| +Version: GnuPG v1.4.13 (GNU/Linux) | ||
| + | ||
| +mQQNBFHOzpUBIADYwJ1vC5npnYCthOtiSna/siS6tdol0OXc82QRgK4Q2YeFCkpN | ||
| +Fw/T5YK34BLVGWDHPoafG2+r1nXIuMZnJIiGw6QVOL2sP9f7PrMmzck5KJPHD14Y | ||
| +GRd9BPkhmt3dXzOCjhig7jI6hKEYayfJNUNs9nlZEvl4QWIBMmk+IyqQz3f1HMfl | ||
| +/GkFDShBYF8Ny7Ktlx7AaXymajm4DCrTkbj5V2ZDqJgyQM549EoPSwXBQYrEjye3 | ||
| +g2viC8rUFRFWFjdnx7jFEb1uhx71YGuqiLxKihUW9pbSNK2cLweFazHSVmh+B/pz | ||
| +fxHfUn+ijLSIAnprTmc/rq89un/iiPt0O/mspcCZ6hE5pFIyX+SC+9PrGz+bFSmw | ||
| +PkMOZzG489G8k4t/uZsit6helkl0emg6JiXLTmS/oTuT7B9Z9/MeEhOXFcxUb0fr | ||
| +2aZkEmH5d1oxSBis3D5nylmNJXOUSCpJAZ8E5Sr/5FbF9IPR+NSzosVacqCx5Dxj | ||
| +vJ7HpZKn6pJfmwrghVXQv04NRTcxbHNmwd98cofBtWX8yBO8M2M+jZrU+BVDUbb/ | ||
| +A1oAyIbUUswBP768Oh11bELhCly774VwBqTojm2yodLGSyysx4zoa6qL7myfor0m | ||
| +a+K29y8WH9XGmKGMdUOg+q9z+ODky9aToGvEo2eVhKIlJsk0aFAGy/8awy6qRIIj | ||
| +UqLMq6XoFcYlE7SmnFUDDDPlBK/NkFFqySpFhKNRyt69Ea9kYXOxDnf/EnBwHn8m | ||
| +PiFQpeZqgnmhyj8Nk1SSQBgUi07NyXdQ/WIYpWmqqqfHRVQgSE9C1920T1zg/E97 | ||
| +n5yYjI/gQQwq9wikkJmog6Ny7MSiwIU4LYV0pTUdI4//EJMId2FH8YEUfvG5ds+F | ||
| +H/o/D4CAJ86KjspizfH8jEjhn0Rm/OtrxLz1rwA1gtF//P3TYNWw5qruL4stP3Rx | ||
| +9Gve8Bm7oCBU73UT2ZJomEsWE3oqXinLRl3YCsjGDg/d3ySD6i0/BBROLIeXkh3M | ||
| +M1CNCqREDGLA0vxQi1o7Zi7ZA4gWPSzvi/8KtSzY1iAQODxWUmOICRP7KQODWJmt | ||
| +roTqhKgZ39wlR6eqkO8ZfAvRYsjvkL+EZFbbKbHxVJLhKchd2qHS+/Q3ov4SFzWY | ||
| +/cE0ChOPDM587Jkps2bynKQAzQ6810FXmJc0ztrPeD3PEbuyY4KNJV8HGViRDJXi | ||
| +wvs8eqfvTDGDPl4aLYVCKO9VqZ2OJvqhRhh71LQ2xRrX1LGnYLnUGCMuEQYKvMcI | ||
| +TSssM/VAfeWAPJDklD0lVNJ7d9Z5ugvJHFc01SaaB47Aod2SPWp5DeiY4A8dcy2w | ||
| +7f4Wx6FcdP1RXqaRZKCapBooN04vsvGllCshABEBAAG0KFdhcnJlbiBUb2dhbWkg | ||
| +KDIwMTMpIDx3dG9nYW1pQGdtYWlsLmNvbT6JBDgEEwECACIFAlHOzpUCGwMGCwkI | ||
| +BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELEXnrc0fcENY4Ef/23L9iC/39ekJ8Is | ||
| +1IZdCoDD7/DgVaZqydDcy/ha9uaDFY4MQ0h9RZYo1axVBth/Yxzh1XnvitW8HFKn | ||
| +DXn5wJI++KWpdLMUsTrc2iWsjAGgicmN5bkQvfTnRwn2pF17EUUEhZ8YyE3qMSVD | ||
| +rDBECLAswT4Oiq9r9yw3VCFsRaxz5bhk9AAzWjam4H7mAfaEAOUvuX221v+KGSDM | ||
| +UsGAAe+GjMPL8KnGgEbISlSUF1Ubcw3EChcqjf3BID2gMLkAnGAoxlCZSYievytg | ||
| +71mcHyIf9yF861QrGcrCh6/objtRdt4IDUVwo9wapunRmYCdZux4ApD0Hit8nAsm | ||
| +QtxftSK6FWBTOCIRoOQTjwE8qj9GYTIbUFppX66Dzh00td5NKkWz0PVze7YSk2hC | ||
| +KCVBYyUYHgkQYVlYLZw7dBrXSXv7ph95vc93RDS031cU7tPOrthqnMmhtg1WAwzH | ||
| +xc2v3az9Gsw1RyxBAOVpkB0AFODiEiVg46xqmxaBPXfQOg/buZA2l4gK4U/pVUZH | ||
| +72lle2CbBw6FoSx40Y3GYZWB2uEdXBTNLlhX7q2Jvo8WdeTxEv5ACZsjI7K/wrzt | ||
| +nmvCHefOmVf4tefkXy1MyEvBt2+Ek9bHmHDL1BSk/JdJzJtam2uaP5pGum/PwIUW | ||
| +KBatmHKZUKwgOIml9btB413C4zSK3GQmC5Y/+TxYybACIdxTDqPSczVZ5Q+jSywX | ||
| +shdOoLXDRyrYhT2sHjZ1W29B8ebokqwousF77EA94sqfQvDDnmFpvfq9+m0WYtOh | ||
| +PFF/yxOtlbPJYX7mnC8+dUgobSA4AR5Yrclt+levgivIyNuBwzevHRDMreMZKl2J | ||
| +uiOT8tkuu66fAwEltIowjjV7TBRfij4QLXl/zfFo8jKU8efL3xluXoRn7g+E5FZ3 | ||
| +19KTF/DWMcttfeTUYVnv0QTnstb1RGnVj7w8JMy90mKdMQFpl7IzHd2n6LrhEw1V | ||
| +1AaPF7EcQBOlvsvlZdIFQrFyhKozKoGi3wRrl/bNdebxjIjPzfN9GgbiufFjz2d7 | ||
| +DMR9GFXfUMVxLncaqBBy1X7MV17ZF7K4uw6DET4fRoecb4N5mJVUxvYq4iZApnNP | ||
| +npgGdmlcyPD6o3ynx/vkw78m13Gfgw8i2OaUY7xBdOyNVEvkJZBLaC2hw+TKLaZa | ||
| +v0RExtAO0i0QO4Y1eo78Pl9jOpz0wkJ4KG0270l1Jza4IyaIhYRDWagWOfOp/cXU | ||
| +cvKKiuJhLOsX1Bapz+O2Aor9+EwWRdPd3BzE2ABdmKHPwrKobNp75wrCpQ5mZifn | ||
| +DSTJRMPQQJV3wGfB2sP0NE47U8w5CCmVK8gEuqYr6wBl/CCq5tjiRc63VM+to5V4 | ||
| +tVNTCJWIRgQQEQIABgUCUc7PqwAKCRBr3f6OVKKs8cYAAKCFCLJ5wc+iAVCFRevh | ||
| +xTcJct0fiQCePHpY37CIeP8s9BH8GqCDftUqh8SIRgQQEQIABgUCUc7YwAAKCRDd | ||
| +f+mrhdawLOVxAJ9Tjud26LtbM2mWcPj2eT7dhqgZrQCdGyMwMMVzp40lsCK44PrV | ||
| ++mpFO7KJAhwEEAECAAYFAlHO0BkACgkQw35HI5aSdvXfLw//c2zZxXg4bI2W7gkB | ||
| +ZQJIOWnmPZfhrXQNeFuetyGoWTm4ZWxW362AdDGiQSGNNkXqeBPOitKOkRyZP/Z3 | ||
| +h1vwkLkwdFZyWXK00BzYBKfjThWV1BAnArQLewSiLlE7qSnsPEY6FW0PNv711cbL | ||
| +lXSUP1/lW25Nx7L76GAF6sHreoIdglE8YH5y310JuFnqPa0uaJG+qDo8Mb+WkyLy | ||
| +Q2A3Atws1tIB9vHsq2FCt9ACyAEA3AqtHR4uMFmIWpUYy77fJAZdzLZTWf0X5XYw | ||
| +XILNPOl/I0iZrq3LYQAvJfIwjWAC/lm6uTLlvkIJHKyhcIT+RocjMV7bY9ezrC5i | ||
| +Cag3gaOZ7USMt0h59KdmBaHHNa32n3PSHg9XWljqoWMRjuaRdcA7ofK0BHDJbHWE | ||
| +cldKXC09laWOXbyNmJsfug/23vNE7fS/cAKSIgEWszEwHJCahB2i/HqOQF0DUGpq | ||
| +3s5oIXs2xIuN0yT6yIIiQnTU/FkWDDu4D1OZNrDW6QG3cde0PRak/0fr4Kv4iB3E | ||
| +CAzlsRBlWKNu/eE4QBx6cbvLqjriijhGAF+8Y1zvRKNKPr96hSsETfVytuKDTp6F | ||
| +u7PAarrSATGXI92Hy3ThAZla0VOYUyeWPktqUMDNq90tIBZbwKpOMMqvJmZfgdOU | ||
| +4ldDq1f5+2WhAt1aTL1GJVCuYcCJAhwEEAECAAYFAlHO3MQACgkQnSOpPExjO3Gi | ||
| +jxAAsD+luooqqoz3A28ZxwfCDV+ovazQ4Bw6hVU0zKKZIz/2H4jwmLtLSHtucCRM | ||
| +xRksZmnqf1p2nn+BKBXDInx9vI9HziMu7fWkzhuovAIf9+X/l6EYV1kQx0bIM1qU | ||
| +BxXWPgGdrgSZZHl9Qff/BOBnrI8NJmVBDzOh3BSs0BrSR7aFbkSNbjk/JcP0JEyk | ||
| +j6wDKQsop/Ca5AboLL0uQPgTvhxCu4VROKjhu7o3s7G3xlxTpimwYklDQuYFaGKj | ||
| +ZNIGFq2orfIMBnj7ZEQVXzhWltlHcgPVP5TDfgd4pVUbyUB6ras7odJWWIHnUFmj | ||
| +1l5bGidIwRXGFusE4iR8pR528LG2KxNDNQYipsKRY9m+wH+N7gbSgK8DxmocvieV | ||
| +vcILFS5VrPLbEO2oC13NMljmvua3ovDB0CEh9rybaH+/oA+VDS2L3pkgATTju+Vx | ||
| +6+mVdlvnrA4mJ5BoLHzrleKybS4ZkbtVBh1KOYmo95NgVifRvpVPB6hKzwqcjYFV | ||
| +fVYBxTryTBRyd9MLsqpPKnGLBENTFvKDxRCK3iioNyVhXdS0z/UyF1C2hwNTpnjY | ||
| +pGCu+Es3SILJg2TvQcwLM0OoYBA1bcONm2XbkTrdCpTOtQcSewQSkijREunx14iu | ||
| +pvNSWeNmbjQU7gNYhvwcBgh90tWgNCfqTtSa5xSe46tmv0SJAhwEEAECAAYFAlHQ | ||
| +1hgACgkQZwn/QC8Dr2hT/g/+OFUYPXfWo0+ILdxyTGP/v2mSw/X3dBCEYUqefWxD | ||
| +umcwnksey+thEGFBlxbwpyOfAoTzZLUupaG6BacVgRUvv8bTne4v2H1d22aBXyjC | ||
| +HMtQPhupn/giamu8q8hCPFrDp6inIAeFuz1GmQaH6xWO5eYBuYXQtxlvZLWBsuMT | ||
| +74en4e3vjczxGmJu/nvM9ugcYsexA/zcN6SRGr7t2pV4ZElPzPBRyAzhYqhP1YlB | ||
| +Rydz60OjgcWYEoJKWhJOfmFJ3ZoNGAz4TGoBkDIq4olCF0/cxqrtHN+ZnEOLwiZ7 | ||
| +4ZX90avcjEFtM+Wb5dBHNpni4ISoHcVI1X0ye6tuAOOt7RywbET/0oIW5iSNMgJ0 | ||
| +X4XYgOIQ2+a8yjGBjo9I57k0vp1mL6Ji/eaa0dlppcCGnzvSHss+O0qO212pg5Yk | ||
| +GGfjX1y1ZeSP3ca9C2XyOGIVw2d2Iu7OyqAv/N81xt6ZgG3qixQC0nmgOmn7Kh2B | ||
| +20W12KpLxKS8RQdHawGau3MBGKeqbfK6/eAzm22yD4/yJAoW4hKgm84z3FbKUN8w | ||
| +ulYMK9hS2c4egpoDAOJ/QZLLXFWiyi7/sHZz69G2AweWCjOJh28Otg0cUHoLo7jw | ||
| +oO/L0rCsOQMbUuIumYXBPHNnDwv1xfv2lT8tVzf6GksFJBAw0DybxOMTaOg45Lhz | ||
| +jGS5BA0EUc7OlQEgAN6t+BV705uoCsdHtQBq/HKGGD5tBiOzy7Wd4nF/c6EWzET4 | ||
| +QUnmw6bDnqjxrk9MWniPDf1O9MvuB4qIY6g9kEjZ+VSQpWUZpZ5bMXCNHrfh9J2Q | ||
| +6oLWqDmpeZv2OI0O9wxT62QaFei2qBtimSnBudLSCnvmU3S0h1PflmJsbj+tVcko | ||
| +w2yOh2bjH1jkVAODHvEbxqyD6fiZhbfUVbPC49SBmXv8Gv0UywNSkP+iqJdwZAb0 | ||
| +XtjRx4WjZCkTwJAnbM4CJ63+5Hd83BtWZAZbGAh76XY/cSkDirXtXC+2LNUmP5W2 | ||
| +QY+ur5Bvz8LHaqJMXLAtePdkv5kpd+jXBrZieXUtqovxZaQTinl7C3L2TZd/ivxD | ||
| +F3Rko9BFDuXXcdZrxBY5b3146IvSPp1y0WmHRxhAPb+RuiHQMt8K92nOhPyvtWXB | ||
| +mWz0GnW9L6+CW4LKSPRSnE057hyxYNP/DcDd+fWFH+MmhU9noqHfJXSaLVzdI5PI | ||
| +L8N44AndPIojnlxrxRs7Ik/nW6cTV9H3agg+24yyTdFkACbfIS6wWXOHeHuBzmO6 | ||
| +VI7pXOZJ9vZT7zI7M/hVci0R3putsGqgRfByRWWQ2DNeyrwUHexZNR/NYz1uhvA6 | ||
| +dBfKcuAwqxbdSrW/BxJ+iJWdkgYGCV67VLlO6S9sO33HgOanpPr5R9V1KsFVh4dN | ||
| +j6BjZ4ALE5FPNW+iONnuXvtZbN2cBlBzMDeFC9oZoYCs1Pkmk8xUY2sAXPUt1R0G | ||
| +D/miIb7ig1N52j9P6vv6fPs1ghmc/hGkhaXyjS54B5T33V6M9g+yba9mIgi8ZxZa | ||
| +G+4rlFFKA4HS7wYYRJoqMvnc/qBYvoWLaPu3Xq6AXrJyuAaN+e3L8++cWbYHBXF9 | ||
| +qt+Q2RFL0FNiYUQuwkiaerysnm1a0H7ZtJ4zjl4ZgA1Ej7QcylTIbgFW3L7FnyMH | ||
| +/5weLLN2wdjAtzjhRPYJLbV6V/gFbbpCpr+caDUaxSNizQuhhzVI5UrJegaHCCrx | ||
| +DCiwWRFYzN5pqhtgzcaImK76DmPIk+Yrsum5KJZQeGfzKxvF0YnwxU0bxFzcDZJD | ||
| +X2oCJn828Aw2j0nIlVlrrao0JMkvTBeZehO/11U68M2vKGEqrsQOb/BTXyLCeZwn | ||
| +UGow1WvYfRxEZTrhhiYw94EH06gbqmKG1xsuV4LDI5z63/6ACcQW3orMbMymJCky | ||
| +4HiNVZ7SNeGoYe380CJCwv6GN1opKTAWp84cr2KzhAzONGqNWNpUhznAXlI+GzCc | ||
| +D2H330L1atMqZHjgpEfrkowvJ7WBM5KFKDfylaTKhYvfZcTOZs5OmRZSW3U54wRD | ||
| +RMP0d2+k3vRililNhHIErHbjhYFc6zubVbBhvUMAEQEAAYkEHwQYAQIACQUCUc7O | ||
| +lQIbDAAKCRCxF563NH3BDSX2IACugAdZqX+o/+pTkSrj+NEAcP0ZMci8w5nm/yOP | ||
| +VlGyY6PXGuQKcBtvz3LWtIDdddMc/bD/zmZPwSzTx1MMOWc+gjR0azXe2RrdMHYk | ||
| +8pb4X4Op2Nkasoc/8hNsRKaU24WUAQMqrRREIVBEOuHGl1A52Lj+aFB04rRHrkMl | ||
| +AqjB5bwArPorIBdM417EEl4hjEZ9BpQxbUgBhTgGTZuc1u9PsKz1YvQ79YJIRmSH | ||
| +n72Zaf35zY55eOQeoVBzGmFPq+/UFqtRNWA7jmRhHvMz/yR33B/RSxyTJuPb79zi | ||
| +2mIZOrViG3X/UNL4qtOc1cKXQBi+FjHAMlGrCc+D5lnyOhEvqoEuvQic7V6C8Pvk | ||
| +9q+jngn2Gs4pdJO8FOnwaC5xp/ZNE0v7x/KtAHyBA6iKcaepgoRQPSt1ONiHyfh1 | ||
| +iGgJn+Y6IHx4YDYKEY0UIzHhCfWUl8XZWcf4wLGEbGztkRbkCFqrsja5IeaO7umB | ||
| +i6C4f95uSGjV7SiIMJOE8xo/m2g4VCnnmk7U996JwtBMKREMMqa3ABK4trfBL3Kq | ||
| +P6I6ZTlA/C5svkVUVwWOMZau9kLDsxv8keGrFteZtfYa1KPAROFwNuBU82UW0KtX | ||
| +QQbZoBKt1o3LhqEu+hXU3iKocYWSbBThH8u6vPNgSnW2Qcv3gcUU3jGmYeHrGiUO | ||
| +SuEWxwlKUxCxBNfmz1FGswlwve1LsS3RTz/XB/L6Ubhq5L7FevrXz8152kuMqnpy | ||
| +m93sXkL1eJVo07hH+otcRnMzy4vUar9z/N12t3hfTffx29PBKUCc2PKPVpLfJX2i | ||
| +hieHk23fhLnptjc3lm9S+bHO3rqEWHqgNgNp9bpuwiLRsIy6qTtmC8jxXkGXvQrS | ||
| ++2Hv6+jRfDcqEAK3vqi1XL7Td81KRjnheBtsKpjS2PFatK3uTo6v1oRWJCdRCxg1 | ||
| +HT6a9KvZ+DNKcxlQISKAOLX72qpziaDl4CpBdQy4Zg2pr9oYkLdlfkaDK/OH4J3M | ||
| +wJiVf/uNPPd+yy6xZXK0SPZHf+mf5Yt+Sim93hIbdS9AMdvHKB5n3DR27H+/okPj | ||
| +w3J9z85hxgP5KspizQR6t77AWddPRy/l3BBZeb+HiaeKGBJeSNWXpkPXHkdjLW8U | ||
| +QStzFR8r15FWJTmamIknjJ3XNbytMCpu8cj2ZVZdyjPcHEBL3WbNYYtauSuYmyUO | ||
| +yXBaecM/KoTdvHiERU/mMuf7f1ftftCHehZoNaP+BeIbIud9IHIdrSQBCW+RC1Y1 | ||
| +8opDLMtnIOX3OnyCN38ELYcuNLMJxBqnQgi7MVDVcT1+BN/+lFQtG44+rPUkK+T1 | ||
| +Jk1/tIJqcyc1BfY6uFHFXWWnqQnjl0XpZo+/bMDxTVy8yND2 | ||
| +=icdI | ||
| +-----END PGP PUBLIC KEY BLOCK----- |
| @@ -0,0 +1,118 @@ | ||
| +// Copyright (c) 2013 The LevelDB Authors. All rights reserved. | ||
| +// Use of this source code is governed by a BSD-style license that can be | ||
| +// found in the LICENSE file. See the AUTHORS file for names of contributors. | ||
| + | ||
| +#include "leveldb/db.h" | ||
| +#include "db/db_impl.h" | ||
| +#include "leveldb/cache.h" | ||
| +#include "util/testharness.h" | ||
| +#include "util/testutil.h" | ||
| + | ||
| +namespace leveldb { | ||
| + | ||
| +class AutoCompactTest { | ||
| + public: | ||
| + std::string dbname_; | ||
| + Cache* tiny_cache_; | ||
| + Options options_; | ||
| + DB* db_; | ||
| + | ||
| + AutoCompactTest() { | ||
| + dbname_ = test::TmpDir() + "/autocompact_test"; | ||
| + tiny_cache_ = NewLRUCache(100); | ||
| + options_.block_cache = tiny_cache_; | ||
| + DestroyDB(dbname_, options_); | ||
| + options_.create_if_missing = true; | ||
| + options_.compression = kNoCompression; | ||
| + ASSERT_OK(DB::Open(options_, dbname_, &db_)); | ||
| + } | ||
| + | ||
| + ~AutoCompactTest() { | ||
| + delete db_; | ||
| + DestroyDB(dbname_, Options()); | ||
| + delete tiny_cache_; | ||
| + } | ||
| + | ||
| + std::string Key(int i) { | ||
| + char buf[100]; | ||
| + snprintf(buf, sizeof(buf), "key%06d", i); | ||
| + return std::string(buf); | ||
| + } | ||
| + | ||
| + uint64_t Size(const Slice& start, const Slice& limit) { | ||
| + Range r(start, limit); | ||
| + uint64_t size; | ||
| + db_->GetApproximateSizes(&r, 1, &size); | ||
| + return size; | ||
| + } | ||
| + | ||
| + void DoReads(int n); | ||
| +}; | ||
| + | ||
| +static const int kValueSize = 200 * 1024; | ||
| +static const int kTotalSize = 100 * 1024 * 1024; | ||
| +static const int kCount = kTotalSize / kValueSize; | ||
| + | ||
| +// Read through the first n keys repeatedly and check that they get | ||
| +// compacted (verified by checking the size of the key space). | ||
| +void AutoCompactTest::DoReads(int n) { | ||
| + std::string value(kValueSize, 'x'); | ||
| + DBImpl* dbi = reinterpret_cast<DBImpl*>(db_); | ||
| + | ||
| + // Fill database | ||
| + for (int i = 0; i < kCount; i++) { | ||
| + ASSERT_OK(db_->Put(WriteOptions(), Key(i), value)); | ||
| + } | ||
| + ASSERT_OK(dbi->TEST_CompactMemTable()); | ||
| + | ||
| + // Delete everything | ||
| + for (int i = 0; i < kCount; i++) { | ||
| + ASSERT_OK(db_->Delete(WriteOptions(), Key(i))); | ||
| + } | ||
| + ASSERT_OK(dbi->TEST_CompactMemTable()); | ||
| + | ||
| + // Get initial measurement of the space we will be reading. | ||
| + const int64_t initial_size = Size(Key(0), Key(n)); | ||
| + const int64_t initial_other_size = Size(Key(n), Key(kCount)); | ||
| + | ||
| + // Read until size drops significantly. | ||
| + std::string limit_key = Key(n); | ||
| + for (int read = 0; true; read++) { | ||
| + ASSERT_LT(read, 100) << "Taking too long to compact"; | ||
| + Iterator* iter = db_->NewIterator(ReadOptions()); | ||
| + for (iter->SeekToFirst(); | ||
| + iter->Valid() && iter->key().ToString() < limit_key; | ||
| + iter->Next()) { | ||
| + // Drop data | ||
| + } | ||
| + delete iter; | ||
| + // Wait a little bit to allow any triggered compactions to complete. | ||
| + Env::Default()->SleepForMicroseconds(1000000); | ||
| + uint64_t size = Size(Key(0), Key(n)); | ||
| + fprintf(stderr, "iter %3d => %7.3f MB [other %7.3f MB]\n", | ||
| + read+1, size/1048576.0, Size(Key(n), Key(kCount))/1048576.0); | ||
| + if (size <= initial_size/10) { | ||
| + break; | ||
| + } | ||
| + } | ||
| + | ||
| + // Verify that the size of the key space not touched by the reads | ||
| + // is pretty much unchanged. | ||
| + const int64_t final_other_size = Size(Key(n), Key(kCount)); | ||
| + ASSERT_LE(final_other_size, initial_other_size + 1048576); | ||
| + ASSERT_GE(final_other_size, initial_other_size/5 - 1048576); | ||
| +} | ||
| + | ||
| +TEST(AutoCompactTest, ReadAll) { | ||
| + DoReads(kCount); | ||
| +} | ||
| + | ||
| +TEST(AutoCompactTest, ReadHalf) { | ||
| + DoReads(kCount/2); | ||
| +} | ||
| + | ||
| +} // namespace leveldb | ||
| + | ||
| +int main(int argc, char** argv) { | ||
| + return leveldb::test::RunAllTests(); | ||
| +} |
Oops, something went wrong.