All instances of data race are related to accessing
KnownAddress elements, except for peer.go where its
related to closure.
Following are the changes:
- Add KnownAddress.mtx (sync.Mutex) and used same to
sync access points
- For peer.go, pass local copy to the closure
This change moves the hdkeychain package outside of the dcrutil
directory into its own top-level package. This change is being made
since hdkeychain only depends on dcrutil's address code, and if the
rpctest integration tests are ever moved outside of the dcrd repo,
hdkeychain will no longer be required to remain in dcrd to avoid a
cyclic dependency.
This merge commit adds the following code from the
github.com/decred/dcrutil package into a new
github.com/decred/dcrd/dcrutil package:
* Address handling
* Amount type
* AppDataDir func
* bitflags functions
* Block wrapper type
* Hash160 func
* Tx wrapper type
* WIF type
as well as all tests for this code.
The old github.com/decred/dcrutil/hdkeychain package has also been
merged and moved to github.com/decred/dcrd/dcrutil/hdkeychain.
dcrd packages have been updated to use the new packages and the dep
files have been updated for this change.
This syncs the .gitignore file with the upstream btcd project since it
shouldn't have been completely changed to begin with. While here, it
also adds the Decred-specific binaries.
Use this new bloom package rather than relying on the bloom package
from the dcrutil repo.
Some minor source code changes have been made to conform to the dcrd
linter requirements.
This commit contains the entire dcrrpcclient repository along with
several changes needed to move all of the files into the rpcclient
directory in order to prepare it for merging. This does NOT update dcrd
or any of the other packages to use the new location as that will be
done separately.
- All import paths in the old dcrrpcclient files have been changed to
the new location
- All references to dcrrpcclient as the package name have been changed to
rpcclient
This removes the entire coinset package since it is not used by anything
and, even if something similar to it were desired, it's only related
specifically to wallet functionality in terms of coin selection so
therefore it really should go in the wallet repo.
This is part of an overall effort to rework the layout of the dcrutil
repo to remove unused code and cyclic dependencies.
Change tickettreap to allow for efficient queries by min blockheight,
allowing for O(1) ticket expiry.
This allows for a very significant performance increase as previously
the same query required an iteration of 40,000 or so items while
processing each block.
Remove tickettreap.Mutable - it is not used, and it is difficult to
maintain with the other changes made to the treapNode class used by
Immutable.
Fix O(n) lookups-by-position into being O(ln n) in liveTickets.
This reduces the time to handle a new block by around a third.
Update memory-usage calculations to be more accurate, and have
extra testing.