Release candidate 1 for 0.17.1. Changes since 0.17.0:
Changed
- The XRebalancer grant now fades out as a side's real forwarded
volume grows. The credit is assumed earned on
clboss-xrebalance-grant-weightpercent of the peer's capacity
(new dynamic option, default 25, both sides; it was a whole
capacity-turn), and real forwards replace it one for one: a side
with no record reads exactlyclboss-xrebalance-grant, at half
the weight the rate is half grant and half record, and from the
weight on the side reads its own record alone (#339).
Fixed
- A total peer blackout (lightningd started with
--offline, Tor
down, a firewall) no longer demerits every peer or counts as
CLBOSS uptime; withclboss-auto-closeit could close channels
as the peers came back. CLBOSS also honours--offlineitself:
it no longer connects to peers, tests channel candidates, or
opens channels while the flag is set, since an explicit connect
used to go through and defeat both the flag and the guard (#346,
#347). - Channel-candidate selection by popularity now samples with A-ES
(Efraimidis and Spirakis) instead of an A-Chao variant that
omitted the reservoir-size factor m: selection was
arrival-order-dominated, and an overweight item could still be
evicted by later arrivals. The popularity finder now shares
Stats::ReservoirSamplerwith the other finders instead of a
drifted inline copy (#343). - Backing up a live
data.clbosswithsqlite3 .backupor.dump
could kill CLBOSS, andlightningdwith it when CLBOSS is an
important plugin: a write that found the file read-locked failed
at commit, and that failure was thrown from a destructor, which
ends the process. The connection now waits up to ten seconds for
a lock, aslightningddoes for its own database; a commit that
still fails is reported to the caller as an error, and the sendpay
hook path logs it and carries on. The README gains a backup note
(#335). - The channel creator could open a second channel to a peer we
already had one with. Three of the four candidate finders do not
check for an existing channel, the candidate table is swept of
channeled peers only on the 10-minute listpeers poll, and the
creator runs about every two minutes without a check of its own,
so a proposal naming an existing peer could reach the planner in
the window between sweeps. The creator now drops such proposals
against a freshlistpeerchannelsbefore any funds are planned.
The channel-state test the sweep relies on also counted only
OPENINGDandCHANNELDstates, so a dual-funded open in
progress looked unchanneled; it now countsDUALOPENDstates
too, and no longer reads past the end of the shorterONCHAIN
(#332). - A splice no longer reads as losing the channel. CLN keeps a
spliced channel open and forwarding inCHANNELD_AWAITING_SPLICE
until the new funding locks in, which the create/destroy monitor
took as leavingCHANNELD_NORMAL: it announced a
ChannelDestruction, and aChannelCreationminutes later, so
the peer's complaint history was archived, its channel age reset,
and the fee monitor's state for it flushed. That state now counts
as live. The monitor's polling path also never reported a
destruction: peers that had gone were appended to the creations
list (#344). - A channel awaiting splice lock-in (
CHANNELD_AWAITING_SPLICE, open
and forwarding for the hours until the new funding confirms) was
skipped wherever channels were summed or chosen by
CHANNELD_NORMAL: the node balance swapper's sendable and
receivable totals, and the by-balance fee modder. They now admit
that state. The rebalancer and the active prober keep to
CHANNELD_NORMAL: the xrebalance plugin accepts only that state and
rejects a request naming any other channel, and a probe is sized
from a spendable balance that CLN reports for the old funding until
lock-in. While a splice-out is pending, CLN reports the balance of
the old funding until the new one locks in but already admits HTLCs
against the lower post-splice balance; the node balance swapper and
the by-balance fee modder now deduct the pending splice-out the same
way, so a channel awaiting a splice-out is never read as holding
funds it no longer has (#345).
Removed
- The
PeerJudgemodules (Boss/Mod/PeerJudge/), an earnings-based
channel closer that was compiled in but never instantiated. Its
close path issued a unilateral close after 180 seconds regardless
of whether the peer was connected, the pattern 0.16.3 removed from
the complaints desk (#324), so wiring it up as it stood would have
force-closed offline peers as a matter of course. Nothing in the
running plugin changes; the code stays in history should an
earnings-based closer be wanted again (#336).