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

更友善的 scale nemesis #338

Open
cosven opened this issue Jan 6, 2021 · 0 comments
Open

更友善的 scale nemesis #338

cosven opened this issue Jan 6, 2021 · 0 comments

Comments

@cosven
Copy link
Contributor

cosven commented Jan 6, 2021

当前,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 以符合上述需求。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant