lnd+pilot: use WeightedCombAttachment

We make the default autopilot agent use the WeightedCombAttachment.
Currently it uses only one sub-heuristic, prefAttachment.
This commit is contained in:
Johan T. Halseth 2019-01-09 09:14:45 +01:00
parent bdbadeaa75
commit f48c8f91c4
No known key found for this signature in database
GPG Key ID: 15BAADA29DA20D26
2 changed files with 20 additions and 5 deletions

9
lnd.go
View File

@ -313,10 +313,15 @@ func lndMain() error {
return err return err
} }
// Set up an auotpilot manager from the current config. This will be // Set up an autopilot manager from the current config. This will be
// used to manage the underlying autopilot agent, starting and stopping // used to manage the underlying autopilot agent, starting and stopping
// it at will. // it at will.
atplCfg := initAutoPilot(server, cfg.Autopilot) atplCfg, err := initAutoPilot(server, cfg.Autopilot)
if err != nil {
ltndLog.Errorf("unable to init autopilot: %v", err)
return err
}
atplManager, err := autopilot.NewManager(atplCfg) atplManager, err := autopilot.NewManager(atplCfg)
if err != nil { if err != nil {
ltndLog.Errorf("unable to create autopilot manager: %v", err) ltndLog.Errorf("unable to create autopilot manager: %v", err)

View File

@ -83,7 +83,7 @@ var _ autopilot.ChannelController = (*chanController)(nil)
// autopilot.Agent instance based on the passed configuration struct. The agent // autopilot.Agent instance based on the passed configuration struct. The agent
// and all interfaces needed to drive it won't be launched before the Manager's // and all interfaces needed to drive it won't be launched before the Manager's
// StartAgent method is called. // StartAgent method is called.
func initAutoPilot(svr *server, cfg *autoPilotConfig) *autopilot.ManagerCfg { func initAutoPilot(svr *server, cfg *autoPilotConfig) (*autopilot.ManagerCfg, error) {
atplLog.Infof("Instantiating autopilot with cfg: %v", spew.Sdump(cfg)) atplLog.Infof("Instantiating autopilot with cfg: %v", spew.Sdump(cfg))
// Set up the constraints the autopilot heuristics must adhere to. // Set up the constraints the autopilot heuristics must adhere to.
@ -98,12 +98,22 @@ func initAutoPilot(svr *server, cfg *autoPilotConfig) *autopilot.ManagerCfg {
// First, we'll create the preferential attachment heuristic. // First, we'll create the preferential attachment heuristic.
prefAttachment := autopilot.NewPrefAttachment() prefAttachment := autopilot.NewPrefAttachment()
weightedAttachment, err := autopilot.NewWeightedCombAttachment(
&autopilot.WeightedHeuristic{
Weight: 1.0,
AttachmentHeuristic: prefAttachment,
},
)
if err != nil {
return nil, err
}
// With the heuristic itself created, we can now populate the remainder // With the heuristic itself created, we can now populate the remainder
// of the items that the autopilot agent needs to perform its duties. // of the items that the autopilot agent needs to perform its duties.
self := svr.identityPriv.PubKey() self := svr.identityPriv.PubKey()
pilotCfg := autopilot.Config{ pilotCfg := autopilot.Config{
Self: self, Self: self,
Heuristic: prefAttachment, Heuristic: weightedAttachment,
ChanController: &chanController{ ChanController: &chanController{
server: svr, server: svr,
private: cfg.Private, private: cfg.Private,
@ -202,5 +212,5 @@ func initAutoPilot(svr *server, cfg *autoPilotConfig) *autopilot.ManagerCfg {
}, },
SubscribeTransactions: svr.cc.wallet.SubscribeTransactions, SubscribeTransactions: svr.cc.wallet.SubscribeTransactions,
SubscribeTopology: svr.chanRouter.SubscribeTopology, SubscribeTopology: svr.chanRouter.SubscribeTopology,
} }, nil
} }