Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

更友善的 scale nemesis #338

@cosven

Description

@cosven

当前,scaling nemesis 会随意的 scale 集群的任意节点。

func (s scaling) Invoke(ctx context.Context, node *cluster.Node, args ...interface{}) error {
log.Printf("apply nemesis scaling on ns %s", node.Namespace)
return s.scaleCluster(ctx, node.Namespace, node.Namespace, 2)
}
func (s scaling) Recover(ctx context.Context, node *cluster.Node, args ...interface{}) error {
log.Printf("unapply nemesis scaling on ns %s", node.Namespace)
return s.scaleCluster(ctx, node.Namespace, node.Namespace, -2)
}
func (s scaling) scaleCluster(ctx context.Context, ns, name string, n int32) error {
var tc v1alpha1.TidbCluster
err := wait.PollImmediate(5*time.Second, time.Minute*time.Duration(5), func() (bool, error) {
key := types.NamespacedName{
Namespace: ns,
Name: name,
}
if err := s.cli.cli.Get(context.TODO(), key, &tc); err != nil {
return false, err
}
return true, nil
})
if err != nil {
return err
}
_, err = controllerutil.CreateOrUpdate(context.TODO(), s.cli.cli, &tc, func() error {
tc.Spec.TiDB.Replicas += n
tc.Spec.PD.Replicas += n
tc.Spec.TiKV.Replicas += n
log.Printf("Scale TiDB's nodes to %d PD's nodes to %d TiKV's nodes to %d", tc.Spec.TiDB.Replicas, tc.Spec.PD.Replicas, tc.Spec.TiKV.Replicas)
return nil
})
return err
}

但在 resolve-lock 这个测试用例中,我们想只 scale tikv,并且保证 tikv 的 replicas 总是不少于 n(3) 个。

希望 tipocket 能提供另外一种 nemesis 以符合上述需求。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions