mirror of
https://github.com/ZmnSCPxj/clboss.git
synced 2026-08-20 13:28:15 +02:00
Add rebalancer mode selector (classic/off) as a dynamic option
Introduces a single source of truth for which rebalancing track is
active. Boss::Mod::RebalanceModeManager owns the mode in memory (no
sqlite, so a restart reverts to the configured default, giving a
known-good baseline on every boot) and registers clboss-rebalance-mode
as a dynamic option: the config file sets the startup default and
`setconfig clboss-rebalance-mode <mode>` switches it at runtime without
a restart. It answers RequestRebalanceMode queries and reports the mode
under clboss-status.
Modes are "classic" (run the rebalancer) and "off" (a real quiesce,
also the supported way to disable rebalancing entirely). This is the
seam that later lets a second rebalancing track coexist and be toggled
without a restart.
The classic-track rebalancers self-gate on the mode at their existing
decision points, modeled on RebalanceUnmanager: EarningsRebalancer gates
its trigger, InitialRebalancer gates its run, and JitRebalancer gates
the top of htlc_accepted so that in off mode it does not defer the HTLC
and adds no forwarding latency. A header-only Boss::ModG::
RebalanceModeProxy provides get_mode for the gate sites. off composes
with the existing per-peer unmanage balance tag: off wins globally,
otherwise the per-peer tag still excludes specific peers.
The three rebalancers' unit tests now install a RebalanceModeManager on
the test bus so the self-gate query is answered (default classic, so
they behave as before). Without a responder the RequestRebalanceMode
ReqResp is never satisfied and leaks, which the valgrind-checked tests
flag as a failure.
New files: Boss/RebalanceMode.hpp, Boss/Msg/RequestRebalanceMode.hpp,
Boss/Msg/ResponseRebalanceMode.hpp, Boss/ModG/RebalanceModeProxy.hpp,
Boss/Mod/RebalanceModeManager.{hpp,cpp}.
This commit is contained in:
parent
51a8e2fec0
commit
cbdbae2be1
14 changed files with 393 additions and 33 deletions
|
|
@ -60,6 +60,7 @@
|
|||
#include"Boss/Mod/PeerFromScidMapper.hpp"
|
||||
#include"Boss/Mod/PeerMetrician.hpp"
|
||||
#include"Boss/Mod/PeerStatistician.hpp"
|
||||
#include"Boss/Mod/RebalanceModeManager.hpp"
|
||||
#include"Boss/Mod/RebalanceUnmanager.hpp"
|
||||
#include"Boss/Mod/Reconnector.hpp"
|
||||
#include"Boss/Mod/RegularActiveProbe.hpp"
|
||||
|
|
@ -207,6 +208,7 @@ std::shared_ptr<void> all( std::ostream& cout
|
|||
#endif /* ENABLE_COMPLAINER_BY_LOW_SUCCESS_PER_DAY */
|
||||
|
||||
/* Channel balancing. */
|
||||
all->install<RebalanceModeManager>(bus);
|
||||
all->install<FundsMover::Main>(bus);
|
||||
all->install<MoveFundsCommand>(bus);
|
||||
all->install<EarningsTracker>(bus);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue