Commit Graph

4304 Commits

Author SHA1 Message Date
cc494bd47f docs/INSTALL: update non-make installation to include lncli
The make file contains installing lncli, which has to be installed 
manually when not using make.
2018-05-14 15:56:36 -07:00
3a982063a0 fundingmanager+lnwallet: ensure proposed channel reserve is above dust limit 2018-05-14 14:20:20 -04:00
2e076ba21e fundingmanager+lnd: propose remote channel reserve above dust limit 2018-05-14 14:20:19 -04:00
3c33a8cb67 lnwallet: enforce backend node's min relay fee floor
In this commit, we fix an issue where sometimes transactions wouldn't
provide enough of a fee to be relayed by the backend node. This would
especially cause issues when sweeping outputs after a contract breach,
etc.

Now, we'll fetch the minimum relay fee from the backend node and ensure
it is set as a lower bound if the estimated fee ends up dipping below
it.
2018-05-14 14:20:18 -04:00
ec93bf581d contractcourt test: add TestChannelArbitratorLocalForceDoubleSpend
This commit adds a test for the case where the ChannelArbitrator fails
to broadcast its commitment during a force close because of
ErrDoubleSpend. We test that in this case it will still wait for a
commitment getting confirmed in-chain, then resolve.
2018-05-14 14:21:06 +02:00
28b12116e4 Merge pull request #1230 from wpaulino/wait-for-chan-updates-flake
test: fix update channel policy flake
2018-05-11 13:32:13 -07:00
b73eef12b3 Merge pull request #945 from jimpo/decayedlog
Move DecayedLog from lightning-onion to htlcswitch.
2018-05-10 20:06:53 -07:00
f0050e7ffb Merge pull request #1201 from lightningnetwork/peer-async-disconnect
server: Peer Async Disconnect w/ Scheduled peerConnected
2018-05-10 17:05:16 -07:00
e5052f124b lnd_test: fix update channel policy flake
In this commit, we address a timeout issue on our Travis builds within
the update channel policy integration test. Before asserting the policy
for the channel between Alice and Bob, we need to make sure we receive
the updates responsible for modifying this policy first. At times, the
update wasn't received in time before checking the policy, which led to
us checking the old policy. We fix this by explicitly making sure we
wait for the updates first.
2018-05-10 20:03:01 -04:00
b271ed5ffb Merge pull request #1199 from cfromknecht/queue-msg-err-chans
peer/server: Remove Broadcast err chans
2018-05-10 16:55:57 -07:00
444a6c08cc Merge pull request #1166 from cfromknecht/switch-isolate-pending-channels
Isolate Pending Channels in Switch
2018-05-09 16:58:26 -07:00
941e0fb9bb aezeed: fix README links 2018-05-09 16:36:40 -07:00
03a7c027e4 Merge pull request #1210 from halseth/route-hints-flake
[integration flake] Fix route hints flake
2018-05-09 16:33:45 -07:00
3d26748906 Merge pull request #1208 from cfromknecht/cache-chainview-filter-entries
routing/chainview/neutrino: cache filter entries
2018-05-09 16:31:18 -07:00
0c22297379 fundingmanager_test: mock ReportShortChanID w/o sid arg 2018-05-09 16:07:52 -07:00
2f52e29a5b fundingmanager: remove sid arg from ReportShortChanID 2018-05-09 16:07:52 -07:00
d6628574ca lnd: remove sid arg to UpdateShortChanID 2018-05-09 16:07:52 -07:00
57551fbd74 htlcswitch/mailbox_test: add orchestrator pending/live test 2018-05-09 16:07:52 -07:00
418983cadc htlcswitch/switch_test: test send pending channel 2018-05-09 16:07:51 -07:00
c290398b4b htlcswitch/mailbox: adds mailOrchestrator 2018-05-09 16:07:51 -07:00
d3403306b6 htlcswitch/switch: segment pending links from live links 2018-05-09 16:07:51 -07:00
1dace1fed4 htlcswitch/mock: impl UpdateShortChanID w/ error 2018-05-09 16:07:25 -07:00
3e46a5e815 htlcswitch/link: fix UpdateShortChanID 2018-05-09 16:07:25 -07:00
b5591cd66c htlcswitch/interfaces: return err from UpdateShortChanID 2018-05-09 16:06:49 -07:00
f963f91a3c multi: use mutex-guarded ShortChanID() on OpenChannel 2018-05-09 16:06:49 -07:00
19b5eaa4dc channeldb/channel_test: adds RefreshShortChanID test 2018-05-09 16:06:49 -07:00
7ad56943c7 channeldb/channel: adds RefreshShortChanID 2018-05-09 16:06:49 -07:00
355355b81e Merge pull request #1180 from halseth/empty-commitsig-fix
Empty commitsig fix
2018-05-09 16:02:49 -07:00
0d435eff68 lnd_test: print predErr instead of generic waitPredicate error 2018-05-09 10:28:00 +02:00
03d2aa360f lnd_test: fix flake from routing hints for inactive channel
This commit attempts to fix a flake we have seen, where a routing hints
for an inactive channel was unexpectedly added to the invoice. This
happened because of a race between shutting down the endpoint of this
channel (Eve) and creating the invoice. This commit fixes this by moving
the call to AddInvoice with corresponding route hint check inside a
WaitPredicate.
2018-05-09 10:25:08 +02:00
2313eb2c7b make/testing_flags: delete log files before running itests, print date
This commit makes sure old log files are deleted before running the
integration tests. Previously new logs would be added to the existing
ones, causing a big mess. This was especially messy during flake
hunting, as all logs would be kept.

In addition, we now print the date before every start of the integration
tests, which is useful to see how long they have been running, for
instance in case of a deadlock.
2018-05-09 10:02:30 +02:00
bc22fc9b63 makefile flakehunter: call $(ITEST) directly, print current time
For some reason, starting the integration test using /bin/sh -c would
cause unit tests to also be run. We fix this by just calling $(ITEST).
2018-05-09 09:59:51 +02:00
854e2a0581 link test: add TestChannelLinkWaitForRevocation
This commit adds a test where we trigger a situation which would
previously make the link think it was never in sync, and potentially
create a lot of empty state updates. This would happen if we were
waiting for a revocation, while still receiving updates from the remote.
Since in this case we could not ACK the updates because of the exhausted
revocation window, our local commitchain would extend, while the remote
chain would stall. When we finally got the revocation the local
commitment height would be far larger than the remote, and FullySynced
would return false from that point on.
2018-05-09 08:47:21 +02:00
db254c1258 link test: add TestChannelLinkNoMoreUpdates
This commit adds a new test that makes sure we don't try to send
commitments for states where there are now new updates. Before the
recent change to FullySynced we would do this in this test scenario, as
the local an remote commitment heights would differ.

The test makes the local commitment chain extend by 1 vs the remote,
which would earlier trigger another state update, and checks taht no
such state update is made.
2018-05-09 08:47:21 +02:00
71228a6b06 lnwallet/channel: don't use commit height to determine FullySynced
This commit removes a faulty check we did to determine if the channel
commitments were fully synced. We assumed that if out local commitment
chain had a height higher than the remote, then we would have state
updates present in our chain but not in theirs, and owed a commitment.
However, there were cases where this wasn't true, and we would send a
new commitment even though we had no new updates to sign. This is a
protocol violation.

Now we don't longer check the heights to determine if we are fully
synced. A consequence of this is that we also need to check if we have
any pending fee updates that are nopt yet signed, as those are
considered non-empty updates.
2018-05-09 08:47:21 +02:00
1b1f5f197a routing/chainview/neutrino: cache filter entries
This commit alters the neutrino chainview such that it
caches the filter entries corresponding to watched
outpoints at the moment they are added to the filter.
Previously, we would rederive each filter entry when
reconstructing the relevant filter entries, which
would lead to unnecessary work on the gc. Now, each is
created at most once, and reused across subsequent
reconstructions.
2018-05-08 20:46:46 -07:00
ddcbb40898 Merge pull request #1206 from wpaulino/temp-chan-failure-update
htlcswitch+server: ensure we always send an update w/ a TempChannelFailure
2018-05-08 19:33:20 -07:00
01a9b6b7da Merge pull request #1202 from cfromknecht/link-sync-circuit-commit
htlcswitch/link: ensure circuits are committed in-order
2018-05-08 18:53:05 -07:00
b437553b5a Merge pull request #1198 from cfromknecht/validation-barrier-quit
router: Validation Barrier Shutdown
2018-05-08 17:28:35 -07:00
eb5eb4a58b Merge pull request #1179 from halseth/channel-entry-crash
Improve logging for missing HTLC entry crash
2018-05-08 17:21:40 -07:00
de9de771bb htlcswitch/link: ensure circuits are committed in-order
This commit makes the call to forwardBatch after locking
in Adds synchronous. This ensures that circuits for any Add
packets are added to the switch in the same order that they
are prescribed in the channel state. Though it is very unlikely
this case would arise, it may happen under more greater loads.

In addition, this also makes some trivial optimizations wrt. to
not spawning unnecessary goroutines if no settle/fail packets
are locked in.
2018-05-08 16:37:35 -07:00
a2f7170ff0 peer: make Disconnect async, block on WaitForDisconnect 2018-05-08 16:37:14 -07:00
8c04dd0030 server: add peer connection callback scheduling
This commit adds a simple scheduling mechanism for
resolving potential deadlocks when dropping a stale
connection (via pubkey inspection).

Ideally, we'd like to wait to activate a new peer until
the previous one has exited entirely. However, the current
logic attempts to disconnect (and wait) until the peer
has been cleaned up fully, which can result in
deadlocks with other portions of the codebase, since
other blocking methods may also need acquire the mutex
before the peer can exit.

When existing connections are replaced, they now
schedule a callback that is executed inside the
peerTerminationWatcher. Since the peer now waits for
the clean exit of the prior peer, this callback is
now executed with a clean slate, adds the peer to
the server's maps, and initiates peer's Start() method.
2018-05-08 16:37:14 -07:00
d20adc8e0e server: use nil errChan for broadcasts
This skips creating errChans when sending messages to
peer during broadcast. This should be a minor memory
optimization, as well as not requiring channel sends
on those which will never be read.
2018-05-08 16:35:49 -07:00
0691b21a30 peer: improves disconnect handling
This commit attempts to resolve some potential deadlock
scenarios during a peer disconnect.

Currently, writeMessage returns a nil error when disconnecting.
This should have minimal impact on the writeHanlder, as the
subsequent loop selects on the quit chan, and will cause it to
exit. However, if this happens when sending the init message,
the Start() method will attempt to proceed even though the peer
has been disconnected.

In addition, this commit changes the behavior of synchronous
write errors, by using a non-blocking select. Though unlikely,
this prevents any cases where multiple errors are returned, and
the errors are not being pulled from the other side of the errChan.
This removes any naked sends on the errChan from stalling the peer's
shutdown.
2018-05-08 16:35:49 -07:00
99e7ec0895 routing/validation_barrier_test: test semaphore and quit
Adds test checking the basic functionality of the barrier's
semaphore and behavior during shutdown.
2018-05-08 16:32:08 -07:00
995e3fa85f routing/validation_barrier: adds ErrVBarrierShuttingDown
Adds a new error ErrVBarrierShuttingDown that is returned
from WaitForDependants if the validation barrier's quit
chan is closed. This allows any blocked goroutines to
distinguish whether the dependent task has been completed,
or if validation should be aborted entirely.
2018-05-08 16:32:08 -07:00
eaa8cdf916 routing/router: improve validation barrier shutdown
This commit improves the shutdown of the router's
pending validation tasks, by ensuring the pending
tasks exit early if the validation barrier
receives a shutdown request.

Currently, any goroutines blocked by WaitForDependants
will continue execution after a shutdown is signaled.
This may lead to unnexpected behavior as the relation
between updates is no longer upheld. It also has the
side effect of slowing down shutdown, since we
continue to process the remaining updates.

To remedy this, WaitForDependants now returns an error
that signals if a shutdown was requested. The blocked
goroutines can exit early upon seeing this error,
without also signaling completion of their task to
the dependent tasks, which should will now properly
wait to read the validation barrier's quit signal.
2018-05-08 16:32:08 -07:00
3854c1ed68 discovery/gossiper: exit early on validation barrier quit 2018-05-08 16:32:08 -07:00
72f48b6abe htlcswitch+server: ensure we always send an update w/ a TempChannelFailure
In this commit, we ensure that any time we send a TempChannelFailure
that's destined for a multi-hop source sender, then we'll always package
the latest channel update along with it.
2018-05-08 13:00:28 -04:00