Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.
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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions