From d340f2be771d668c16df2feea1983c0051cbb146 Mon Sep 17 00:00:00 2001 From: Nikhil Vasan Date: Fri, 15 Mar 2024 09:44:02 -0700 Subject: [PATCH 1/3] limit persistent peers to 20 --- cosmos/node/config.go | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/cosmos/node/config.go b/cosmos/node/config.go index 1540059..9774866 100644 --- a/cosmos/node/config.go +++ b/cosmos/node/config.go @@ -4,10 +4,13 @@ import ( "bytes" "context" "fmt" - toml "github.com/pelletier/go-toml/v2" - petritypes "github.com/skip-mev/petri/core/v2/types" + "math/rand" "reflect" + "strings" "time" + + toml "github.com/pelletier/go-toml/v2" + petritypes "github.com/skip-mev/petri/core/v2/types" ) type Toml map[string]any @@ -164,8 +167,12 @@ func (n *Node) SetDefaultConfigs(ctx context.Context) error { func (n *Node) SetPersistentPeers(ctx context.Context, peers string) error { cometBftConfig := make(Toml) + allPeers := strings.Split(peers, ",") + p2pConfig := make(Toml) - p2pConfig["persistent_peers"] = peers + + // return the filtered peers + p2pConfig["persistent_peers"] = filterPeers(allPeers) cometBftConfig["p2p"] = p2pConfig @@ -175,3 +182,18 @@ func (n *Node) SetPersistentPeers(ctx context.Context, peers string) error { cometBftConfig, ) } + +// filter peers returns a random subset of the given peers. The subset is determined as follows: +// 1. If the number of peers is less than or equal to 20, return all peers. +// 2. If the number of peers is greater than 20, return a random subset of 20 peers. +func filterPeers(allPeers []string) string { + if len(allPeers) <= 20 { + return strings.Join(allPeers, ",") + } + + rand.Shuffle(len(allPeers), func(i, j int) { + allPeers[i], allPeers[j] = allPeers[j], allPeers[i] + }) + + return strings.Join(allPeers[:20], ",") +} From bbaca50cb517b589e8f56dc074ab2fc1ec854324 Mon Sep 17 00:00:00 2001 From: Nikhil Vasan Date: Wed, 13 Mar 2024 06:04:09 -0700 Subject: [PATCH 2/3] allow caching of static droplet ips --- core/provider/digitalocean/droplet.go | 9 ++++++--- core/provider/digitalocean/task.go | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/core/provider/digitalocean/droplet.go b/core/provider/digitalocean/droplet.go index 35bd618..b4d54df 100644 --- a/core/provider/digitalocean/droplet.go +++ b/core/provider/digitalocean/droplet.go @@ -54,7 +54,7 @@ func (p *Provider) CreateDroplet(ctx context.Context, definition provider.TaskDe start := time.Now() - err = util.WaitForCondition(ctx, time.Second*100, time.Millisecond*100, func() (bool, error) { + err = util.WaitForCondition(ctx, time.Second*300, time.Millisecond*300, func() (bool, error) { d, _, err := p.doClient.Droplets.Get(ctx, droplet.ID) if err != nil { @@ -119,13 +119,16 @@ func (p *Provider) deleteDroplet(ctx context.Context, name string) error { return nil } -func (p *Provider) getDroplet(ctx context.Context, name string) (*godo.Droplet, error) { +func (p *Provider) getDroplet(ctx context.Context, name string, returnOnCacheHit bool) (*godo.Droplet, error) { cachedDroplet, ok := p.droplets.Load(name) - if !ok { return nil, fmt.Errorf("could not find droplet %s", name) } + if ok && returnOnCacheHit { + return cachedDroplet, nil + } + droplet, res, err := p.doClient.Droplets.Get(ctx, cachedDroplet.ID) if err != nil { diff --git a/core/provider/digitalocean/task.go b/core/provider/digitalocean/task.go index 0946f38..826cdcf 100644 --- a/core/provider/digitalocean/task.go +++ b/core/provider/digitalocean/task.go @@ -172,7 +172,7 @@ func (p *Provider) DestroyTask(ctx context.Context, taskName string) error { } func (p *Provider) GetTaskStatus(ctx context.Context, taskName string) (provider.TaskStatus, error) { - droplet, err := p.getDroplet(ctx, taskName) + droplet, err := p.getDroplet(ctx, taskName, false) if err != nil { return provider.TASK_STATUS_UNDEFINED, err @@ -296,7 +296,7 @@ func (p *Provider) DownloadDir(ctx context.Context, s string, s2 string, s3 stri } func (p *Provider) GetIP(ctx context.Context, taskName string) (string, error) { - droplet, err := p.getDroplet(ctx, taskName) + droplet, err := p.getDroplet(ctx, taskName, true) if err != nil { return "", err From afc76aca745982536872f23017329bce1d83f7eb Mon Sep 17 00:00:00 2001 From: Eric Warehime Date: Tue, 5 Nov 2024 12:25:05 -0800 Subject: [PATCH 3/3] Revert "limit persistent peers to 20" This reverts commit d340f2be771d668c16df2feea1983c0051cbb146. --- cosmos/node/config.go | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/cosmos/node/config.go b/cosmos/node/config.go index 9774866..1540059 100644 --- a/cosmos/node/config.go +++ b/cosmos/node/config.go @@ -4,13 +4,10 @@ import ( "bytes" "context" "fmt" - "math/rand" - "reflect" - "strings" - "time" - toml "github.com/pelletier/go-toml/v2" petritypes "github.com/skip-mev/petri/core/v2/types" + "reflect" + "time" ) type Toml map[string]any @@ -167,12 +164,8 @@ func (n *Node) SetDefaultConfigs(ctx context.Context) error { func (n *Node) SetPersistentPeers(ctx context.Context, peers string) error { cometBftConfig := make(Toml) - allPeers := strings.Split(peers, ",") - p2pConfig := make(Toml) - - // return the filtered peers - p2pConfig["persistent_peers"] = filterPeers(allPeers) + p2pConfig["persistent_peers"] = peers cometBftConfig["p2p"] = p2pConfig @@ -182,18 +175,3 @@ func (n *Node) SetPersistentPeers(ctx context.Context, peers string) error { cometBftConfig, ) } - -// filter peers returns a random subset of the given peers. The subset is determined as follows: -// 1. If the number of peers is less than or equal to 20, return all peers. -// 2. If the number of peers is greater than 20, return a random subset of 20 peers. -func filterPeers(allPeers []string) string { - if len(allPeers) <= 20 { - return strings.Join(allPeers, ",") - } - - rand.Shuffle(len(allPeers), func(i, j int) { - allPeers[i], allPeers[j] = allPeers[j], allPeers[i] - }) - - return strings.Join(allPeers[:20], ",") -}