Commit Graph

45 Commits

Author SHA1 Message Date
Robert Habermeier
7d348e2260 light client fixes (#6148)
* light client fixes

* fix memory-lru-cache

* clear pending reqs on disconnect
2017-07-26 15:48:00 +02:00
Robert Habermeier
67c1f71b6e Proper light client informant and more verification of imported headers (#5897)
* do more validation of imported headers in light client

* generalize informant with traits

* informant implementation for light client

* make comment into TODO

* fix broken test

* disable full checking of headers in light client in sync tests
2017-07-10 13:21:11 +02:00
Vurich
17de29e69a Prevent disconnect from within handler (and style cleanup) 2017-06-30 12:10:12 +02:00
Vurich
5eba9078fc Report whether a peer was kept from Handler::on_connect 2017-06-30 11:00:32 +02:00
Vurich
3d8dc11442 Upgrade elastic-array to 0.9.0
This is a huge change, which includes some changes to replace code that
originally cloned to reuse allocations instead. The updated
`elastic-array` crate renames its consuming `Vec`-conversion method to
`into_vec`, which means that I can do a simple
`sed -i 's/to_vec/into_vec/'` and then fix the compilation errors.

This commit is probably a minor performance win and definitely a
significant readability win.
2017-06-29 13:05:33 +02:00
Guanqun Lu
41fed96d96 convert try!() to ? 2017-06-18 22:16:34 +08:00
Robert Habermeier
aa41b48ba0 Dynamically adjust PIP request costs based on gathered data (#5603)
* beginnings of load timer

* initial load timer implementation

* saturating adds

* create flow params from distribution

* update request credits and acknowledgement

* mark cumulative cost dead code

* fix compilation

* tests

* supply load share and other params to  lightprotocol params

* add file store

* fix ethsync compilation

* reshuffle constants
2017-05-23 12:31:09 +02:00
Adrian Brink
144d6c2379 Update light_sync test to include cache dependency 2017-04-07 21:35:42 +02:00
Adrian Brink
645b8e4b0b Fix failing tests 2017-04-07 21:35:42 +02:00
Robert Habermeier
10a470a5fa better bookkeeping of requests in light sync 2017-03-23 15:44:16 +01:00
Robert Habermeier
b96eb45877 eth_syncing RPC for light client 2017-03-23 03:23:53 +01:00
Robert Habermeier
e3d6525d83 store cumulative cost in pending request set. 2017-03-22 19:30:42 +01:00
Robert Habermeier
dd1f8295c4 fix sync test compilation 2017-03-21 21:00:31 +01:00
Robert Habermeier
fa42b6acec port ethsync to PIP messages 2017-03-16 23:51:47 +01:00
Robert Habermeier
ddbdfafc05 buffer flow -> request credits 2017-02-23 23:10:29 +01:00
Robert Habermeier
baf0dbc6bf LightProvider struct using light transaction queue 2017-02-09 18:42:18 +01:00
Robert Habermeier
028dbe5fe2 rename get_header to block_header by convention 2017-02-08 20:22:41 +01:00
Gav Wood
8404edb656 Fix whitespace (#4299)
* Fix whitespace.

* Update copyright years/owner.

* Push release only for tags.
2017-01-25 18:51:41 +01:00
Robert Habermeier
a791cb50a6 Light protocol syncing improvements (#4212)
* remove old lint silencer

* dispatch requests only to peers with higher TD

* dynamic target for sync rounds

* use round pivots instead of frames, fix test

* fix total difficulty calculation for test client

* fix broken reorg algorithm

* fork test, fix ancestor search
2017-01-20 12:41:59 +01:00
Robert Habermeier
7123f19a75 Test harness for lightsync (#4109)
* make on_connect/disconnect public

* free flow params constructor

* Shared ownership of LES handlers

* light provider impl for test client

* skeleton for testing light sync

* have test_client use actual genesis

* fix underflow in provider

* test harnesses for lightsync

* fix tests

* fix test failure caused by test_client changes
2017-01-11 14:39:03 +01:00
Robert Habermeier
d765611050 allow queue to drain fully when idle 2016-12-19 12:41:00 +01:00
Robert Habermeier
ccdf5d5873 increase tick timer and limit peers to one req 2016-12-19 12:28:42 +01:00
Robert Habermeier
893892ca12 remove request limiting from sync service 2016-12-17 00:31:21 +01:00
Robert Habermeier
be914ddfc7 fix check for moving backwards 2016-12-16 23:53:36 +01:00
Robert Habermeier
e57ab96731 fix reverse start block check 2016-12-16 23:21:59 +01:00
Robert Habermeier
08587a1f56 fix subchain request ordering 2016-12-16 23:21:51 +01:00
Robert Habermeier
653363c572 limit to one pending request per peer 2016-12-16 23:21:17 +01:00
Robert Habermeier
a7505be627 fix deadlocks 2016-12-16 22:09:29 +01:00
Robert Habermeier
ce84215d93 naive and bad request dispatcher 2016-12-16 15:26:39 +01:00
Robert Habermeier
0d7b638a2d ancestor search response handler 2016-12-16 14:53:36 +01:00
Robert Habermeier
8622ab66dc skeleton for maintain_sync: all but dispatch 2016-12-15 22:42:24 +01:00
Robert Habermeier
9c7340307e handle events, minimal state machine 2016-12-15 21:51:08 +01:00
Robert Habermeier
5346539ef8 minimal header import and client service 2016-12-15 18:47:26 +01:00
Robert Habermeier
f776f48023 drain prepared headers from sync round 2016-12-15 17:33:25 +01:00
Robert Habermeier
71e96aca10 handle abandoned requests 2016-12-15 16:19:28 +01:00
Robert Habermeier
ec88a992e3 provide response context to response handler 2016-12-15 15:50:36 +01:00
Robert Habermeier
5d8bfd8758 handle responses for round scaffold and frames 2016-12-15 13:05:38 +01:00
Robert Habermeier
0768a61944 light: add LightChainClient trait 2016-12-14 23:26:15 +01:00
Robert Habermeier
1bcfc9348d light: specialize Downloader to SyncRound 2016-12-14 23:25:51 +01:00
Robert Habermeier
91b8fa7039 light: downloader state machine stub 2016-12-14 22:57:30 +01:00
Robert Habermeier
0d466fa8d0 light: tests for response module 2016-12-14 20:27:03 +01:00
Robert Habermeier
887bcfb88a light: response decoding and verification module 2016-12-14 19:36:48 +01:00
Robert Habermeier
359d433292 light: pass incoming responses to peer state machine 2016-12-13 22:26:06 +01:00
Robert Habermeier
6fb71527e4 light: search for common ancestor with peers 2016-12-13 21:09:57 +01:00
Robert Habermeier
8c64400654 light: change sync module name 2016-12-13 21:09:43 +01:00