Commit Graph

1400 Commits

Author SHA1 Message Date
Neil Booth
bef04750d7 Handle the case there are no blocks 2018-07-26 06:05:00 +08:00
Neil Booth
9b23fbc747 Prepare 1.7 2018-07-25 23:16:32 +08:00
Neil Booth
7a3938be23 Make mempool histogram refresh frequency coin-specific 2018-07-25 23:16:32 +08:00
Neil Booth
5e4586ce54 Create a task to start_servers()
That way we start waiting on the shutdown event no matter what
so we can always be shut down
2018-07-25 22:02:00 +08:00
Neil Booth
365c217031 header_mc might be None 2018-07-25 21:36:23 +08:00
Neil Booth
68dbf9fad2 Tweak task handling so all errors are logged 2018-07-25 21:35:05 +08:00
Neil Booth
3fbd4992ce Rework prefetch logic
This also fixes a recent reorg bug...
2018-07-25 20:40:25 +08:00
Neil Booth
d008707330 Fix bug recently introduced in reorgs
Fixes #532
2018-07-25 15:25:40 +08:00
Neil Booth
5a42f79bb8 Require an exact aiorpcX version
The interface is changing; best to target a single codebase
2018-07-25 11:07:14 +08:00
Neil Booth
ae143703ae Travis: test Python 3.7 2018-07-25 11:00:11 +08:00
Neil Booth
db8ee48c2e await on send_request directly 2018-07-25 10:40:50 +08:00
Neil Booth
8d3f98d3fd Don't check task exceptions ourselves 2018-07-25 10:40:50 +08:00
Neil Booth
fa84b0f54b Use asyncio.gather to propogate exceptions 2018-07-25 10:37:13 +08:00
Neil Booth
918592fbff Remove RequestError; clean up a bit 2018-07-25 09:47:07 +08:00
Neil Booth
e1309836ca Fix typo in prior 2018-07-24 21:38:50 +08:00
Neil Booth
eac214e508 Rework peer discovery
Make it more naturally async
2018-07-24 21:22:07 +08:00
Neil Booth
ba607544b9 Avoid callback in peer manager
Spawn separate tasks for each peer we test
2018-07-24 14:26:14 +08:00
Neil Booth
12c024f3ac Log proxy detection failure 2018-07-24 14:02:31 +08:00
Neil Booth
79b98b2b54 Distinguish private and public methods of peer mgr
Give private methods a leading _
Remove dead code
2018-07-24 13:52:40 +08:00
Neil Booth
92ddb52f63 Update various comments 2018-07-24 11:41:29 +08:00
joesixpack
83732af4fe Support for Minexcoin (#529) 2018-07-24 09:41:03 +08:00
Neil Booth
221f1222a6 Defer peer discovery 2018-07-24 09:20:45 +08:00
Neil Booth
316f642a08 Reduce memory footprint
- Use tuples in preference to lists
  They are always at least 11% smaller memory
  footprint, rising to 35% for short arrays
2018-07-24 09:15:35 +08:00
Neil Booth
7485d0aaf0 Retain the prevouts with each MemPoolTx 2018-07-24 08:21:58 +08:00
ghost43
45ccf8a64e fix mempool tx fee calculation typo (#531) 2018-07-23 20:31:52 +08:00
Neil Booth
7c01acdbf2 Remove comment 2018-07-23 17:26:51 +08:00
Neil Booth
b05cc4e78b Clean up fee histogram implementation
Much more efficient to just calculate it outright than try
and maintain datastructures
2018-07-23 17:26:42 +08:00
Neil Booth
3e535e47f4 Start peer discovery whilst syncing the mempool 2018-07-23 15:18:49 +08:00
Neil Booth
0963ce5230 Completely overhaul mempool sync logic
- highly concurrent and a lot more efficient than previously
- initial mempool sync should be much faster (feedback please)
- mempool processing no longer blocks client session handling
- uses less memory to store the mempool
- fixes an obscure bug where sometimes txs were dropped
- more robust, clean and easy to understand

Fixes #433
2018-07-23 15:18:04 +08:00
Neil Booth
21604cad15 Create a MemPoolTx object and use it 2018-07-22 23:19:35 +08:00
Neil Booth
4b3ceff0d2 Deserialize mempool txs in a thread 2018-07-22 22:18:54 +08:00
Neil Booth
9bd9476a54 Make mempool processing more properly asynchronous 2018-07-22 21:56:22 +08:00
Neil Booth
4da95dd853 Simplify refresh hashes loop 2018-07-22 16:57:30 +08:00
Neil Booth
821f907971 Put stats logging into its own task 2018-07-22 16:54:32 +08:00
Neil Booth
2c51b127de Clarify mempool's exported interface 2018-07-22 13:25:13 +08:00
Neil Booth
a9a69acaf3 Pass the daemon not chain_state to mempool constructor
The mempool as its own process would maintain its own daemon
2018-07-22 12:04:48 +08:00
Neil Booth
35506f6054 Make notifications properly async 2018-07-22 10:38:37 +08:00
Neil Booth
277e2447c0 Fix the package versions in setup.py 2018-07-21 20:53:05 +08:00
Neil Booth
e568ee2488 Improve comments 2018-07-21 20:51:42 +08:00
Neil Booth
c715ae6249 Rework mempool and notification code
Clarifies the mempool interface to look more like what it
would in its own process
2018-07-21 20:45:27 +08:00
Neil Booth
3e8c413b77 In ChainState prepend private members with an underscore 2018-07-21 20:45:27 +08:00
Neil Booth
6cf7b049fa Require aiohttp >= 2.0 2018-07-21 20:45:27 +08:00
Neil Booth
74c5c3f817 Don't accept onion peers if we have no proxy 2018-07-20 19:03:34 +08:00
Neil Booth
f7c95986bf Fix failing test 2018-07-20 17:14:47 +08:00
Neil Booth
0c28136739 Remove dead code 2018-07-20 17:05:30 +08:00
Neil Booth
8e99d076b6 Logging tweaks 2018-07-20 16:43:15 +08:00
Neil Booth
ca3ba2b2d8 Rework mempool and BP<->prefretcher communication 2018-07-20 16:43:15 +08:00
Neil Booth
431989f0ea Label 1.6a 2018-07-20 15:07:23 +08:00
Neil Booth
530c7cac6f Clean up shutdown process of the block processor
- enables removal of executor code
- clarify flush guarantees
2018-07-20 15:06:28 +08:00
Neil Booth
41e734caeb Clean up controller interface with other parts 2018-07-20 12:40:57 +08:00