Commit Graph

6632 Commits

Author SHA1 Message Date
Conner Fromknecht
99150b41d6
peer: retry writes with delay on timeout errors
This commit modifies the writeHandler to catch timeout
errors, and retry writes to the socket after a small
backoff, which increases exponentially from 5s to 1m.
With the growing channel graph size, some lower-powered
devices can be slow to pull messages off the wire during
validation. The current behavior will cause us to
disconnect the peer, and resend all of the messages that
the remote peer is slow to validate. Catching the timeout
helps in preventing such expensive reconnection cycles,
especially as the network continues to grow.

This is also a preliminary step to reducing the
write timeout constant. This will allow concurrent usage
of the write pools w/out devoting excessive amounts of
time blocking the pool for slow peers.
2019-03-26 16:40:07 -07:00
Olaoluwa Osuntokun
1a8e4b0316
Merge pull request #2058 from roeierez/fix_reconnect
Reconnect to peer when switching networks
2019-03-26 16:13:21 -07:00
Olaoluwa Osuntokun
6ad8be25e1
Merge pull request #2773 from Roasbeef/graph-batch
channeldb: convert all Update calls to use Batch
2019-03-22 15:05:28 -07:00
Olaoluwa Osuntokun
c7ca387a9d
Merge pull request #2744 from cfromknecht/disable-before-close
cnct+chancloser: disable channel before closing
2019-03-21 21:08:23 -07:00
Olaoluwa Osuntokun
e58fa33ab0
Merge pull request #2590 from Crypt-iQ/init_message_payload_fix
lnwire: features "maxAllowedSize" fix
2019-03-21 20:58:29 -07:00
Olaoluwa Osuntokun
6440f39120
Merge pull request #2794 from halseth/autopilot-query-heuristic-no-active-agent
autopilot: move queryHeuristic out of agent
2019-03-21 20:20:51 -07:00
Olaoluwa Osuntokun
5ee40df54c
Merge pull request #2765 from cfromknecht/brar-handle-tower-sweep
breacharbiter: watch for spends on all inputs until reaching terminal states
2019-03-21 20:10:24 -07:00
Olaoluwa Osuntokun
15c9b389fa
Merge pull request #2781 from joostjager/fix-routerrpc
routerrpc: adapt to changed interfaces of routing subsystem
2019-03-21 19:28:26 -07:00
Olaoluwa Osuntokun
9fc4335ba0
Merge pull request #2790 from alexbosworth/patch-11
README: remove testnet3 specificity
2019-03-21 16:07:07 -07:00
Joost Jager
73efc31177
build: add routerrpc tag in itest 2019-03-21 10:25:58 +01:00
Joost Jager
087de7cc4d
routerrpc: adapt to changed interfaces of routing subsystem 2019-03-21 10:25:55 +01:00
Olaoluwa Osuntokun
9f6a1403e9
Merge pull request #2804 from Roasbeef/update-btcwallet-itest-deadlock
build: update btcwallet to version with deadlock fix
2019-03-20 20:29:27 -07:00
Olaoluwa Osuntokun
8e3a8f2d01
watchtower/wtclient: fix linter issue 2019-03-20 19:36:59 -07:00
Olaoluwa Osuntokun
c48790ff89 build: update to latest btcwallet with deadlock bug fix, neutrino bump 2019-03-20 19:36:50 -07:00
Olaoluwa Osuntokun
9143067014
Merge pull request #2779 from cfromknecht/wtserver-delete-session
watchtower/wtserver: add DeleteSession request
2019-03-19 22:01:17 -07:00
Conner Fromknecht
0c519778a1
watchtower/wtserver/server_test: add TestServerDeleteSession 2019-03-19 19:41:17 -07:00
Conner Fromknecht
3564406dc1
watchtower/wtserver/server_test: cleanup test framework, remove test case indexes 2019-03-19 19:38:57 -07:00
Conner Fromknecht
26adf735c4
watchtower/wtserver: add DeleteSession handler 2019-03-19 19:38:46 -07:00
Conner Fromknecht
8e4a20e1a5
watchtower/wtserver/interface: add DeleteSession + mock impl 2019-03-19 19:38:34 -07:00
Conner Fromknecht
25b2a352cb
watchtower/wtserver: refactor server handlers into own files 2019-03-19 19:38:20 -07:00
Conner Fromknecht
3d934d0978
watchtower/wtwire: add DeleteSession and DeleteSessionReply message 2019-03-19 19:38:09 -07:00
Conner Fromknecht
9523b420bc
breacharbiter_test: add table-driven breach spend tests 2019-03-19 19:25:57 -07:00
Conner Fromknecht
6f06c30421
mock: support late registration of spend ntfns 2019-03-19 19:22:47 -07:00
Conner Fromknecht
997aa3ecf0
breacharbiter: detect all spends, add terminal states
This commit modifies the breach arbiter to monitor
all breached inputs for spends and remove them from
the set of inputs to be swept if they are spent to
a terminal state. Prior, we would only watch for
spends on htlcs that may need to transition and
sweep the corresponding second-level htlc.

With these changes, we will no monitor commitment
outputs for spends, as well as spends from the
second level htlcs themselves. If either of these
is detected, we remove them from the set of inputs
to sweep via the justice transaction because there
is nothing the breach arbiter can do.

This functionality will be needed when adding
watchtower support, as the breach arbiter must
detect the case when the tower sweeps on behalf of
the user and stop pursuing the sweep itself. In
addition, this now properly handles the potential
case where somehow the remote party is able to sweep
the their commitment or second-level htlc to their
wallet, and prevent the breach arbiter from trying
to sweep the outputs as it would now.

Note that in the latter event, the internal
accounting may still be incorrect, as it is assumed
that all breached funds return to the victim.
However, these issues will deferred and fixed at a
later date, as the more crucial aspect is that the
breach arbiter doesn't blow up as a result of towers
sweeping channels.
2019-03-19 19:22:35 -07:00
Conner Fromknecht
3641beb002
breacharbiter: capitalize "unable to" error msgs 2019-03-19 19:21:03 -07:00
Olaoluwa Osuntokun
6d3b142f2a
Merge pull request #2800 from Roasbeef/simplify-timeout-resolver
contractcourt: simplify htlcTimeoutResolver
2019-03-19 17:27:24 -07:00
Olaoluwa Osuntokun
da76c34418
channeldb: convert invoice settle/cancel calls to use Batch 2019-03-19 17:11:17 -07:00
Olaoluwa Osuntokun
e8da6dd0b4
channeldb: convert concurrent channel state machine calls to use Batch 2019-03-19 17:11:14 -07:00
Olaoluwa Osuntokun
3555d3dbd4 channeldb: convert all Update calls to use Batch
In this commit, we convert all the `Update` calls which are serial, to
use `Batch` calls which are optimistically batched together for
concurrent writers. This should increase performance slightly during the
initial graph sync, and also updates at tip as we can coalesce more of
these individual transactions into a single transaction.
2019-03-19 17:10:46 -07:00
Olaoluwa Osuntokun
abda447edb
Merge pull request #2705 from halseth/travis-go-1.12
travis: use go 1.12.x
2019-03-19 16:51:18 -07:00
Olaoluwa Osuntokun
1cea8d98c9
utoxnursery: allow nursery to start up if timeout spend happens
Fixes #2793.
2019-03-19 16:50:30 -07:00
Olaoluwa Osuntokun
db411c244e
contractcourt: add new set of tests in htlcTimeoutResolver to exercise refactorings 2019-03-19 16:50:28 -07:00
Olaoluwa Osuntokun
6b24b6dabd
contractcourt: simplify htlcTimeoutResolver, unify with HTLC contest logic
In this commit, we simplify the existing `htlcTImeoutResolver` with some
newly refactored out methods from the `htlcTimeoutContestResolver`. The
resulting logic is easier to follow as it's more linear, and only deals
with spend notifications rather than both spend _and_ confirmation
notifications.
2019-03-19 16:50:27 -07:00
Olaoluwa Osuntokun
e1a07b68e8
contractcourt: extract which timeout HTLC output to watch into new method 2019-03-19 16:50:09 -07:00
Olaoluwa Osuntokun
b078cea83f contractcourt: move claimCleanUp from contest resolver to timeout 2019-03-19 16:49:56 -07:00
Olaoluwa Osuntokun
232dd73abd
Merge pull request #2691 from cfromknecht/increase-default-recovery-window
cmd/lncli: increase default recovery window to 2.5k
2019-03-19 16:12:32 -07:00
Olaoluwa Osuntokun
71161848aa
Merge pull request #2736 from cfromknecht/config-num-workers
lncfg: add CLI worker configuration
2019-03-19 15:47:38 -07:00
Olaoluwa Osuntokun
158a32c4e1
Merge pull request #1228 from halseth/fee-estimation-rpc
Fee estimation RPC
2019-03-18 16:08:26 -07:00
Olaoluwa Osuntokun
eb30870d8f
build: update to latest version of btcutil with Litecoin bug fix
Fixes #1949.
Fixes #1985.
2019-03-18 15:37:59 -07:00
Johan T. Halseth
6aae6fda93
lncli/autopilot: add -ignorelocal state flag to query 2019-03-18 14:58:19 +01:00
Johan T. Halseth
d4813422c9
autopilot+autopilotrpc: ignore local channels if ignore_local_state set 2019-03-18 14:43:40 +01:00
Johan T. Halseth
c7ab6f3603
lnrpc/autopilotrpc: add ignore_local_state flag 2019-03-18 14:42:58 +01:00
Johan T. Halseth
dd072304b0
autopilot: move queryHeuristic out of agent
This commit moves the logic querying the available heuristics out of the
autopilot agent and into the autopilot manager. This lets us query the
heuristic without the autopilot agent being active.

If called without the agent being active, the current set of channels
will be considered by the heuristics. If the agent is active also the
pending channels will be considered.
2019-03-18 13:32:18 +01:00
Alex Bosworth
928f06049e
README: remove testnet3 specificity
Eliminate the reference to Bitcoin testnet which is now dated
2019-03-17 11:10:46 -07:00
Olaoluwa Osuntokun
ec62104acc
Merge pull request #2618 from cfromknecht/wtclient
watchtower/wtclient: reliable, asynchronous pipeline for revoked state backups
2019-03-16 14:31:55 -07:00
Johan T. Halseth
54f1f32e71
lnwallet/interface_test: add testCreateSimpleTx 2019-03-15 23:47:15 +01:00
Johan T. Halseth
306c0c8aab
lnwallet: return ErrNoOutputs in case no outputs are sent to 2019-03-15 23:47:15 +01:00
Johan T. Halseth
a5becc2063
lncli: add estimatefee command 2019-03-15 23:47:15 +01:00
Johan T. Halseth
1e2af38f5a
lnrpc+rpcserver: define and implement EstimateFee RPC 2019-03-15 23:47:13 +01:00
Johan T. Halseth
bb092bc61e
lnwallet/interface: add CreateSimpleTx to wallet interface 2019-03-15 23:46:51 +01:00