diff --git a/pkg/agentdrain/cluster.go b/pkg/agentdrain/cluster.go index 464e30839af..b8b11265f69 100644 --- a/pkg/agentdrain/cluster.go +++ b/pkg/agentdrain/cluster.go @@ -1,6 +1,10 @@ package agentdrain -import "github.com/github/gh-aw/pkg/logger" +import ( + "slices" + + "github.com/github/gh-aw/pkg/logger" +) var clusterLog = logger.New("agentdrain:cluster") @@ -21,16 +25,14 @@ func newClusterStore() *clusterStore { func (s *clusterStore) add(template []string, stage string) *Cluster { id := s.nextID s.nextID++ - tmpl := make([]string, len(template)) - copy(tmpl, template) c := &Cluster{ ID: id, - Template: tmpl, + Template: slices.Clone(template), Size: 1, Stage: stage, } s.clusters[id] = c - clusterLog.Printf("Created new cluster: id=%d, stage=%s, template_length=%d", id, stage, len(tmpl)) + clusterLog.Printf("Created new cluster: id=%d, stage=%s, template_length=%d", id, stage, len(c.Template)) return c } diff --git a/pkg/agentdrain/mask.go b/pkg/agentdrain/mask.go index 3d3d031177e..e89ac6f1062 100644 --- a/pkg/agentdrain/mask.go +++ b/pkg/agentdrain/mask.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/github/gh-aw/pkg/logger" + "github.com/github/gh-aw/pkg/sliceutil" ) var maskLog = logger.New("agentdrain:mask") @@ -63,12 +64,9 @@ func FlattenEvent(evt AgentEvent, excludeFields []string) string { excluded[f] = true } - keys := make([]string, 0, len(evt.Fields)) - for k := range evt.Fields { - if !excluded[k] { - keys = append(keys, k) - } - } + keys := sliceutil.FilterMapKeys(evt.Fields, func(k string, _ string) bool { + return !excluded[k] + }) sort.Strings(keys) parts := make([]string, 0, len(keys)+1) diff --git a/pkg/agentdrain/persist.go b/pkg/agentdrain/persist.go index 6422def0786..7c214d1709d 100644 --- a/pkg/agentdrain/persist.go +++ b/pkg/agentdrain/persist.go @@ -3,6 +3,7 @@ package agentdrain import ( "encoding/json" "fmt" + "slices" "github.com/github/gh-aw/pkg/logger" ) @@ -31,15 +32,14 @@ func (m *Miner) SaveJSON() ([]byte, error) { persistLog.Printf("Saving miner state: clusters=%d", len(m.store.clusters)) snap := Snapshot{ - Config: m.cfg, - NextID: m.store.nextID, + Config: m.cfg, + NextID: m.store.nextID, + Clusters: make([]SnapshotCluster, 0, len(m.store.clusters)), } for _, c := range m.store.clusters { - tmpl := make([]string, len(c.Template)) - copy(tmpl, c.Template) snap.Clusters = append(snap.Clusters, SnapshotCluster{ ID: c.ID, - Template: tmpl, + Template: slices.Clone(c.Template), Size: c.Size, Stage: c.Stage, }) @@ -71,11 +71,9 @@ func (m *Miner) LoadJSON(data []byte) error { m.store.nextID = snap.NextID for _, sc := range snap.Clusters { - tmpl := make([]string, len(sc.Template)) - copy(tmpl, sc.Template) c := &Cluster{ ID: sc.ID, - Template: tmpl, + Template: slices.Clone(sc.Template), Size: sc.Size, Stage: sc.Stage, }