Mike Hearn
ac8a5008fe
Add JCIP thread annotations jar and use @GuardedBy in Peer.
...
Unlock Peer almost completely and make it fully thread safe with minimal use of locking.
Introduce a new convention that volatile variables have a v prefix.
2013-03-11 14:51:15 +01:00
Mike Hearn
45ce6fe9df
Bit more debugging code in TestWithNetworkConnections
2013-03-11 14:30:10 +01:00
Mike Hearn
c21f182d78
Move refreshing of the bloom filter out of the PeerGroup and into the Peer, where it belongs.
2013-03-11 12:39:46 +01:00
Mike Hearn
bffc85fa24
Move message processing out of the handler class and into the top-level Peer class.
2013-03-11 12:25:10 +01:00
Mike Hearn
b2ab3e1c43
Delete EventListenerInvoker, it is no longer needed.
2013-03-11 12:21:42 +01:00
Mike Hearn
971c9c5999
Remove more usages of EventListenerInvoker in PeerGroup and fix a TODO.
2013-03-11 12:21:01 +01:00
Mike Hearn
081663f857
Remove event listener in PeerGroup.removeWallet() to avoid a memory leak.
...
Resolves issue 344.
2013-03-11 12:10:41 +01:00
Mike Hearn
807447ca1a
Unlock Peer event listeners.
2013-03-07 18:43:23 +01:00
Mike Hearn
2333c44657
Add a comment.
2013-03-07 18:43:15 +01:00
Mike Hearn
c8c1e68152
Unlock TransactionConfidence event listeners, make sure MemoryPool is not locked when a tx is marked broadcast by a peer to avoid inversions via listeners.
...
Unfortunately this introduces some new FindBugs warnings because it doesn't understand the inside-out locking pattern used here, despite that it's correct.
Update issue 233.
2013-03-07 17:38:13 +01:00
Mike Hearn
0534231de9
Run wallet event listeners unlocked. Resolves another inversion.
...
Update issue 223.
2013-03-07 17:08:15 +01:00
Mike Hearn
0c30050a97
Delete the cycle test, we can trust that Guava works.
2013-03-07 17:08:15 +01:00
Mike Hearn
f0aff6484e
Narrow the locking in Peer.processInv() to avoid invoking memoryPool.seen() with the Peer lock held.
...
This resolves an inversion that can occur if a transaction confidence listener is run due to being marked as broadcast.
Update issue 233.
2013-03-07 17:08:07 +01:00
Mike Hearn
2fb3667c42
Add a 1-liner Locks.checkNotLocked method to make it clearer than writing checkState(!lock.isLocked());
2013-03-07 16:18:53 +01:00
Mike Hearn
0221b71418
Convert block chain to use a cycle detecting lock.
2013-03-07 15:57:50 +01:00
Mike Hearn
9d87997736
Some more tweaks to the Locks class.
2013-03-07 15:36:07 +01:00
Mike Hearn
9de6dca8c1
Move cycle detecting lock creation out into a new Locks class, rather than stuff it into Utils.
...
Convert PeerGroup and Peer to also use cycle detecting locks, and add a unit test to Wallet to check that cycle detection works.
Change default policy to warn. Now warnings are being triggered, the followup commits will fix them.
2013-03-07 13:58:04 +01:00
Mike Hearn
94670f3df0
Make Peer.memoryPool final and introduce a new c'tor for it.
2013-03-06 16:08:52 +01:00
Mike Hearn
83308c6ee1
Clear another FindBugs warning in SPVBlockStore.
...
The analysis doesn't seem to be good enough to detect that some of these cases are safe.
2013-03-06 15:52:39 +01:00
Mike Hearn
b780c6f191
Silence a FindBugs warning in Utils.
...
This isn't a real bug as unit tests aren't multi-threaded, but the analysis can't know that.
2013-03-06 15:51:45 +01:00
Mike Hearn
5a16a3d3fe
Silence a couple of FindBugs warnings.
2013-03-06 15:51:17 +01:00
Mike Hearn
1ba2c9d5de
Use a cycle detecting lock in Wallet and convert its event listeners array to a COW list.
...
This does not currently detect or break any cycles, even though some are known.
2013-03-06 15:10:52 +01:00
Mike Hearn
23aa1a9105
Tweak DefaultCoinSelector.isSelectable to take a Transaction as a parameter.
...
Resolves issue 322.
2013-03-06 14:47:30 +01:00
Mike Hearn
f7fa0cda72
Make the use of cycle detecting locks optional at compile time.
2013-03-06 13:51:27 +01:00
Mike Hearn
97bce595c3
ToyWallet -> SPVBlockStore.
2013-03-06 13:47:51 +01:00
Mike Hearn
de653cc42d
Mark BoundedOverheadBlockStore as deprecated.
2013-03-06 13:47:09 +01:00
Mike Hearn
53fcef761e
BitCoin -> Bitcoin
2013-03-06 13:12:27 +01:00
Mike Hearn
e57068451d
Split some selection logic into a static method of DefaultCoinSelector. Resolves issue 322.
2013-03-06 12:13:34 +01:00
Mike Hearn
27a49655fb
Update language level in the POM.
...
Updates issue 334.
2013-03-06 11:59:53 +01:00
Mike Hearn
8355a03439
Require last checkpoint to be at least 1 month old.
2013-03-05 14:48:28 +01:00
Mike Hearn
96cd35f139
Add a convenience method to CheckpointManager and example of how to use in PingService.
2013-03-05 14:48:28 +01:00
Mike Hearn
7f17766b47
Minor javadoc improvement.
2013-03-05 14:48:28 +01:00
Mike Hearn
0419887407
Add a CheckpointManager class and a BuildCheckpoints tool that saves a set of checkpoints to disk. By default there is one every difficulty transition period (two weeks), which means a relatively small amount of RAM needed to hold them all. There are only 111 checkpoints so far and old ones can be thinned out if needed.
2013-03-05 14:48:28 +01:00
Mike Hearn
b4c835c0cf
Quieten a noisy debug line when downloading the block chain.
2013-03-05 14:48:28 +01:00
Mike Hearn
68907880cb
Refactor compact serialization out of SPVBlockStore and into StoredBlock.
2013-03-05 14:48:28 +01:00
Mike Hearn
a61cd9eb19
Switch WalletTool to SPVBlockStore.
2013-03-05 14:48:28 +01:00
Mike Hearn
18a14c6668
Indent fix
2013-03-05 14:48:28 +01:00
Mike Hearn
61410adbaa
Fix BOBS bug introduced by my optimizations.
2013-03-05 14:48:28 +01:00
Mike Hearn
fb56237de8
Fix a couple of unit tests and resolve Matts comment.
2013-03-05 14:48:28 +01:00
Mike Hearn
50323391e5
Misc optimizations, the profiles look much better now.
2013-03-05 14:48:28 +01:00
Mike Hearn
121695fa13
Use a shutdown hook to make sure everything is wrapped up nice and neat. It's not actually required in this example, but it's good practice.
2013-03-05 14:48:28 +01:00
Mike Hearn
20fdc72ab2
Make PingService use SPVBlockStore.
2013-03-05 14:48:28 +01:00
Mike Hearn
54354c16b6
Add SPVBlockStore, a new higher performance replacement for BOBS that uses a fixed-size mmapped ring buffer, with caching on top to cover up for slow Dalvik mapped byte buffer operations.
2013-03-05 14:48:28 +01:00
Mike Hearn
9d6a3cc1e9
Upgrade Guava and make a simple accessor for building cycle-detecting locks.
2013-03-05 14:48:28 +01:00
Mike Hearn
d309863560
Save the last seen chain height as well as hash in the wallet.
2013-03-04 18:52:09 +01:00
Mike Hearn
d626b19a55
Change default ping time to 2sec
2013-03-04 18:44:36 +01:00
Mike Hearn
0608b3a383
Fix a bug that could cause pinging a remote node as fast as it will respond.
2013-03-04 18:28:26 +01:00
Mike Hearn
9a0950e578
Check for null InetAddress in PeerAddress c'tor.
2013-03-04 15:55:44 +01:00
Mike Hearn
1175fe9588
Change the parameter of BlockChainListener.notifyNewBestBlock to be StoredBlock instead of Block, so listeners can get height/work information as well. The Wallet doesn't need this but other listeners may do.
2013-03-04 15:55:39 +01:00
Mike Hearn
00071d3cfc
Add a couple of convenience features: peerGroup.addAddress(InetAddress) and an AbstractBlockChainListener class.
2013-03-04 15:55:35 +01:00