* db: migrate from lmdb-zero to heed
* fix: check resizing operation and wait to avoid crash with multiple batches, fix exists check at batch
* build: fix missing deps at Cargo.lock
* lmdb: single environment, migrate existing databases with provided non-default environment name
* fix: revert chunk size to 128mb
* lmdb: ability to use multiple shared environments
* build: remove unused dependency
* fix: resize to have correct multiplier of the system page size
* lmdb: speed up prefix iter by storing keys
* lmdb: default env name
* lmdb: wait db resize before read, reduce timeout before resizing
* lmdb: use static reader for iterator, count existing batches for stable resize
* fix: check batches count on resize waiting
* lmdb: use separate databases instead of prefixes, use default db for values without prefixes, migrate old environment
* fix: pop pos key
* lmdb: count all open transactions to finish before resizing
* lmdb: immediate resize if there are no open transactions
* lmdb: remove env state when there are no more stores
* lmdb: use atomic for resize and resize checking flags
* lmdb: sleep 10ms when waiting all opened txs to be closed
* lmdb: use atomic open txs and stores count
* lmdb: use index to detect separator, ignore unknown db key to not have a panic
* lmdb: store max 10k keys in the iterator
* lmdb: check iter result on getting total
* lmdb: handle errors at iterator
* lmdb: handle an error when db with provided key not found
* lmdb: fix iterate over 10k keys
* lmdb: document migration resize safety
* lmdb: fix iter test
* lmdb: clear new db after unsuccessful migration, handle read error on migration to interrupt process
* store: bring back old key methods to reproduce data migration
* lmdb: return an error on unsuccessful migration
* lmdb: migration test, clean data after allocate test
* lmdb: info migration log
* fix: move iterator before handling an error to allow skip bad value
* lmdb: return an error if removal of old DB file failed after migration
* lmdb: lifetime for iterator, use write transaction at batch iterator
* lmdb: migration progress
* fix: tests
* lmdb: immediately set resizing flag, ignore resizing flag while there are more than 0 opened txs to avoid stuck, optimize tx counter for some operations
* lmdb: key for successful migration
* lmdb: fix put database creation at separate block to avoid lifetime issues when returning an error on migration
* Change default IP address for P2PConfig to IPv6
Feature request: Change default P2P listen host from 0.0.0.0 to :: for dual-stack IPv4+IPv6 support.
As tested on several windows/linux machines and not found issue. Worked with ipv4 or ipv6 or dual ipv4+ipv6.
* docs+config add p2p listen host options
---------
Co-authored-by: Joerg <wiesche89@googlemail.com>
* ci: include .git directory into build
* p2p: include git ref into version for user agent, show git commit hash instead of last tag into log
* p2p: do not show anything after version if git commit hash is empty
* fix: user agent typo
* peer: unknown state for new peers, check peers state on every monitor (128 healthy non-connected + 128 defuncts + 128 unknown), mark peer as defunct when ping not passed, do not crash on toml parse with dns failure
* p2p: cleanup before selection at monitor, add outbound to connected list only when there is not enough peers + disconnect extra peer immediately, reconnect to seeds at monitor to avoid stuck, update only defunct state to unknown when received existing peer address
* p2p: reduced amount of total peers to check at monitor
* p2p: do not check healthy and defunct peers more often than once per hour, store last connection attempt, do not ask for more peers when there is enough outbound
* peer: update last_attempt when changing peer state to other than Banned
* fix: log of peers amount to check