in controllers/seataserver_controller.go [196:239]
func (r *SeataServerReconciler) updateStatefulSet(ctx context.Context, s *seatav1alpha1.SeataServer,
foundSts *appsv1.StatefulSet, sts *appsv1.StatefulSet) (err error) {
r.Log.Info(fmt.Sprintf("Updating existing SeataServer StatefulSet {%s:%s}", foundSts.Namespace, foundSts.Name))
seata.SyncStatefulSet(foundSts, sts)
err = r.Client.Update(ctx, foundSts)
if err != nil {
return err
}
s.Status.Replicas = foundSts.Status.Replicas
s.Status.ReadyReplicas = foundSts.Status.ReadyReplicas
readySize := foundSts.Status.ReadyReplicas
newSize := *sts.Spec.Replicas
if readySize != newSize {
s.Status.Synchronized = false
}
if readySize == newSize && !s.Status.Synchronized {
username, password := "seata", "seata"
for _, env := range s.Spec.Env {
if env.Name == "console.user.username" {
username, err = seata.FetchEnvVar(ctx, r.Client, s, env)
if err != nil {
r.Log.Error(err, "Failed to fetch Env console.user.username")
}
}
if env.Name == "console.user.password" {
password, err = seata.FetchEnvVar(ctx, r.Client, s, env)
if err != nil {
r.Log.Error(err, "Failed to fetch Env console.user.password")
}
}
}
if err = seata.SyncRaftCluster(ctx, s, username, password); err != nil {
r.Log.Error(err, "Failed to synchronize the raft cluster")
s.Status.Synchronized = false
} else {
r.Log.Info("Successfully synchronized the raft cluster")
s.Status.Synchronized = true
}
}
return r.Client.Status().Update(ctx, s)
}