Commit Graph

157 Commits

Author SHA1 Message Date
Neil Booth
3f743e9630 Distinguish undo_info being empty and not existing
Fixes #46
2016-11-26 16:16:17 +09:00
Neil Booth
af3ae6429e Fix logging bug 2016-11-26 15:35:55 +09:00
Neil Booth
95a2de6dae Move DB undo code to db.py 2016-11-26 13:18:10 +09:00
Neil Booth
8d253c81d3 Move clean_db() to db.py 2016-11-26 13:15:45 +09:00
Neil Booth
db5d0dd6cb Merge branch 'serve_disk_only' into develop 2016-11-26 13:12:57 +09:00
Neil Booth
59244cc24e Move bulk of FS flush code to db.py
More logically belongs there.
Have servers use the flushed DB height not the block processor's height.
Get all headers only from disk.
2016-11-26 13:11:59 +09:00
Neil Booth
df3cb8535a Cleaner handling of touched addresses
Moved to local vars rather than an instance variable
2016-11-26 12:46:11 +09:00
TheLazieR Yip
f3ecfe00e2 Remove unused variables 2016-11-25 07:45:45 -05:00
TheLazieR Yip
828727d41a Remove unneccessary local variables 2016-11-25 07:44:19 -05:00
TheLazieR Yip
b3623f5455 replace header_hashes with header_prevhash , header_hash 2016-11-25 07:25:56 -05:00
Neil Booth
ef2703177e Fix another assertion error during reorgs
Fixes #44
2016-11-25 08:10:11 +09:00
Neil Booth
9e220820aa Rework futures and event handling 2016-11-23 17:52:09 +09:00
Neil Booth
bab0d162de Merge ServerManager and BlockServer 2016-11-23 17:52:08 +09:00
Neil Booth
640360c809 Add feature to simulate reorgs for debugging 2016-11-23 09:52:30 +09:00
Neil Booth
8970205e6c Remove obsolete debugging feature 2016-11-23 09:16:41 +09:00
Neil Booth
2df5aa746f Pop one from tx_counts for each block we back up.
Fixes #40
2016-11-23 09:11:49 +09:00
Neil Booth
26221e751e Remove dead code 2016-11-23 09:02:01 +09:00
Neil Booth
d1ba4b1a76 Reset fs_height when backing up 2016-11-22 08:09:43 +09:00
Neil Booth
67bb01bf2c Fix reorgs with unspendable TXOs 2016-11-22 07:50:01 +09:00
Neil Booth
87cdd2709d Implement daemon failover
Daemon URLs can be comma-separated in the DAEMON_URL env var.
Surrounding whitespace is stripped.
http:// is preprended if missing.
The coin's default port is supplied if missing.
A trailing / is supplied if missing.
Closes #33
2016-11-20 20:52:54 +09:00
Neil Booth
98fd178c62 Make mempool truly asynchronous
Mempool updates happen in parallel asynchronously to processing of
new blocks once caught up.  This means that, e.g., during the initial
slow mempool download incoming blocks can be processed and communicated
to clients without waiting for the downloaded mempool transaction
analysis to complete.  From a client's point of view the server won't
be seen as lagging.
2016-11-20 18:17:55 +09:00
Neil Booth
8617c82ec2 Floor disk_count at zero. 2016-11-19 20:56:08 +09:00
Neil Booth
52116539d4 Clean shutdown: wait for transports to close
We give 10 seconds for everything to be cleaned up, then close forcibly.
Fixes #30
2016-11-19 17:05:47 +09:00
Neil Booth
3d87e299ea Move formatted_time to library 2016-11-19 15:42:06 +09:00
Neil Booth
942d5d6b00 Fix import 2016-11-19 08:07:37 +09:00
Neil Booth
063a5469cc Move mempool to be with BlockServer
BlockProcessor doesn't really need a mempool; mempools are
only useful for servers.
Set first_sync before flushing, so it goes into DB state.
Start servers immediately on catchup; mempool fills asynchronously.

Fixes #31
2016-11-19 08:02:13 +09:00
Neil Booth
d6fa4a1564 More logging improvements
- log software and DB version at startup
- log more DB info at startup
- log software and DB version when first synced

Fixes #29
2016-11-19 07:29:17 +09:00
Neil Booth
88185b0daa Bump log threshold up; tweak log 2016-11-18 22:20:48 +09:00
Neil Booth
24d9e5a95e Tweak flush logic
Aim to not check cache size if caught up; also reduces logs
2016-11-18 22:17:34 +09:00
Neil Booth
e6058c3fd3 hex_hash is already hex 2016-11-18 21:16:34 +09:00
Neil Booth
d2c575a24b Better, more concise logs, particularly when caught up. 2016-11-18 20:08:43 +09:00
Neil Booth
3f8b26291a At startup only log some things during initial sync 2016-11-18 19:21:45 +09:00
Neil Booth
f4651c0ca4 Store tx_num in 'h' table key so keys are unique 2016-11-17 07:59:40 +09:00
Neil Booth
3c98053f5d Remove some dead code 2016-11-17 07:44:42 +09:00
Neil Booth
d85034353f Remove useless re-raise of cancellation 2016-11-15 20:13:50 +09:00
Neil Booth
db187540d5 Have task coros handle cancelled exceptions 2016-11-15 20:09:38 +09:00
Neil Booth
a2280bbc93 Clean up futures handling 2016-11-15 20:09:38 +09:00
Neil Booth
8671e57183 Move fs flushes to same time as history flushes 2016-11-15 06:28:52 +09:00
Neil Booth
95cc979465 Yield more during mempool load 2016-11-14 23:12:50 +09:00
Neil Booth
451f9d026a Merge branch 'save_all_utxos' into develop 2016-11-13 20:42:43 +09:00
Neil Booth
85786b87a2 Save all UTXOs
Change the DB version
2016-11-13 20:35:03 +09:00
Neil Booth
4dac728984 Ignore the unspendable genesis coinbase
Fixes #17
2016-11-13 20:15:54 +09:00
Neil Booth
41ff6e5b11 Prepare 0.4.3 2016-11-13 17:55:50 +09:00
Neil Booth
c93f6cb920 Final cleanup 2016-11-12 21:48:34 +09:00
Neil Booth
501807bf1a Implement IRC support and related queries from clients 2016-11-12 21:06:51 +09:00
Neil Booth
80fe427c89 Improve logging 2016-11-12 20:50:44 +09:00
Neil Booth
1b9a9b8927 Start saving DB version and checking it 2016-11-12 07:31:56 +09:00
Neil Booth
244a0f2fab Update release notes. 2016-11-11 21:18:51 +09:00
Neil Booth
15e052c728 Merge branch 'utxo_optimised' into develop 2016-11-11 21:04:39 +09:00
Neil Booth
f98dc9c351 Practise optimism like before 2016-11-11 21:03:09 +09:00
Neil Booth
56098e0c52 Show up to 3 missing UTXOs
Fixes #15
2016-11-10 23:51:44 +09:00
Neil Booth
311f7f9ffd Better optimised storage of UTXO set 2016-11-10 20:04:33 +09:00
Neil Booth
094fd44fc2 Merge UTXO cache into BlockProcessor 2016-11-10 07:49:01 +09:00
Neil Booth
1737bb8354 Move some code back to correct place
Fixes #12
2016-11-10 07:41:56 +09:00
Neil Booth
06b6d695c2 Only attempt to flush if cancelled 2016-11-10 07:32:39 +09:00
Neil Booth
a07ed5876b Count missing UTXOs and log just once
They're a temporary phenomenon but it's handy to see how often
these things happen.  Fixes #10.
2016-11-09 07:30:48 +09:00
Neil Booth
55cc1d3d65 More regularly 2016-11-09 06:50:00 +09:00
Neil Booth
212d653b5b Yield during mempool updates 2016-11-09 06:45:24 +09:00
Neil Booth
ed44c6ab73 Clean up startup procedure 2016-11-09 00:47:49 +09:00
Neil Booth
a510603b46 Better logging of initial mempool fill 2016-11-08 23:37:19 +09:00
Neil Booth
3972e18e98 Move the rest of fs_cache into BlockProcessor 2016-11-08 23:30:30 +09:00
Neil Booth
ad2dabf751 Remove the FS cache
Really belongs with BlockProcessor now
2016-11-08 20:06:06 +09:00
Neil Booth
5736e9cb70 Move utxo_cache to BlockProcessor where it belongs 2016-11-08 19:35:21 +09:00
Neil Booth
5c5e90d574 Move BlockServer to more appropriate location 2016-11-08 19:20:13 +09:00
Neil Booth
93d53bdd87 The controller is dead! 2016-11-08 08:29:56 +09:00
Neil Booth
2b028cc065 Create BlockServer
Controller now an empty shell
2016-11-08 08:09:59 +09:00
Neil Booth
c0a112f8ea Split out part of block processor into db.py
The part that doesn't actually do any block processing...
2016-11-08 07:38:16 +09:00
Neil Booth
f02acdfd46 A couple more tweaks. 2016-11-06 14:56:08 +09:00
Neil Booth
3ab07c1fb6 Speed up script parsing for ~3% faster throughput
Also improves the coin abstraction
2016-11-06 14:32:27 +09:00
Neil Booth
3d41738a00 Allow daemon is None still 2016-11-06 12:09:41 +09:00
Neil Booth
e651530e5d Log immediately if mempool shrinks 2016-11-06 10:16:02 +09:00
Neil Booth
c2703c58a3 Better mempool log 2016-11-06 09:41:06 +09:00
Neil Booth
c26bc43a00 Remove keys if value is empty 2016-11-06 08:54:56 +09:00
Neil Booth
18efa67f1d Various daemon improvements 2016-11-06 08:24:18 +09:00
Neil Booth
1b589d3d1f Remove old reorg forcing code 2016-11-06 06:53:34 +09:00
Neil Booth
00e9c5a31d Add daemon debugging caught-up facility 2016-11-05 21:37:02 +09:00
Neil Booth
312aaf4736 Attempt to improve the ETA 2016-11-05 18:38:11 +09:00
Neil Booth
f86d91862e Fix typos 2016-11-05 16:03:11 +09:00
Neil Booth
9fbbc8bfdb Clean up daemon interface. 2016-11-05 15:59:42 +09:00
Neil Booth
aa6e4ad922 Raise on chain reorgs
In 0.06 advance_block() returned None instead of True.
Cleaner to throw.
2016-11-05 13:31:33 +09:00
Neil Booth
b5d1f401fd Fix bugs 2016-11-05 12:58:23 +09:00
Neil Booth
48b8b9332e Initial attempt at mempool 2016-11-05 12:27:37 +09:00
Neil Booth
d25e66cb2e Handle the nothing touched case. 2016-11-04 20:08:17 +09:00
Neil Booth
be0a5f246c Fix some typos. 2016-11-03 23:05:13 +09:00
Neil Booth
c0568daec3 Rework the DB API a bit 2016-11-03 19:09:21 +09:00
Neil Booth
892e9524e5 Fix bugs handling client UTXO requests
Allow strings for ints - Electrum command line doesn't convert
Don't blow away hash168s from the DB
2016-11-03 19:09:05 +09:00
Neil Booth
07515c6a0d Fix some of the DB interface 2016-11-03 19:08:41 +09:00
Neil Booth
be2475f617 Handle utxo.get_address 2016-11-03 19:08:25 +09:00
Neil Booth
a5b73560f3 Fix reorg assertion, I think 2016-11-03 19:07:51 +09:00
Neil Booth
51accf7dfe Update BlockProcessor for server changes 2016-11-03 19:05:10 +09:00
Neil Booth
e717e719c1 Prefetcher cleanup 2016-11-03 18:29:36 +09:00
Neil Booth
ceecdc54ac Server work
Avoid touching the block preprocessor hot loop for now
2016-11-03 17:26:50 +09:00
Neil Booth
f9fcdf2232 Merge branch 'master' into develop 2016-11-03 16:53:08 +09:00
Neil Booth
3d11afbda2 Enable servers 2016-11-03 16:48:10 +09:00
Neil Booth
d2ebb80fac Extend copyright notice; improve comments 2016-11-03 16:45:06 +09:00
Neil Booth
58a5e69fca Fix logging issues on sync without the perf hit 2016-11-03 16:40:29 +09:00
Neil Booth
d0088e474a Fix stats 2016-10-29 15:20:38 +09:00
Neil Booth
5c63cd40de Implement reorg logic 2016-10-29 14:38:54 +09:00
Neil Booth
76748d2673 Fix query.py 2016-10-28 21:41:36 +09:00
Neil Booth
2b45698962 Remove Outpoint as a separate object
Hopefully this is a little more efficient
2016-10-28 07:35:18 +09:00