Skip to content

Commit

Permalink
fix: status.AvailableReplicas does not reflect the current state of s…
Browse files Browse the repository at this point in the history
…tatefulset (#1424)

Fix AvailableReplicas not calculated by sts.Status.AvailableReplicas
  • Loading branch information
drivebyer committed Jun 14, 2023
1 parent b1ee277 commit 5ef838a
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
4 changes: 2 additions & 2 deletions pkg/controller/kes.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ func (c *Controller) checkKESCertificatesStatus(ctx context.Context, tenant *min
return nil
}

func (c *Controller) checkKESStatus(ctx context.Context, tenant *miniov2.Tenant, totalReplicas int32, cOpts metav1.CreateOptions, uOpts metav1.UpdateOptions, nsName types.NamespacedName) error {
func (c *Controller) checkKESStatus(ctx context.Context, tenant *miniov2.Tenant, totalAvailableReplicas int32, cOpts metav1.CreateOptions, uOpts metav1.UpdateOptions, nsName types.NamespacedName) error {
if tenant.HasKESEnabled() {
if err := c.checkKESCertificatesStatus(ctx, tenant, nsName); err != nil {
return err
Expand Down Expand Up @@ -261,7 +261,7 @@ func (c *Controller) checkKESStatus(ctx context.Context, tenant *miniov2.Tenant,
// if the KES StatefulSet doesn't match the spec
if !kesStatefulSetMatchesSpec {
ks := statefulsets.NewForKES(tenant, svc.Name)
if tenant, err = c.updateTenantStatus(ctx, tenant, StatusUpdatingKES, totalReplicas); err != nil {
if tenant, err = c.updateTenantStatus(ctx, tenant, StatusUpdatingKES, totalAvailableReplicas); err != nil {
return err
}
if _, err = c.kubeClientSet.AppsV1().StatefulSets(tenant.Namespace).Update(ctx, ks, uOpts); err != nil {
Expand Down
18 changes: 9 additions & 9 deletions pkg/controller/main-controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -867,10 +867,10 @@ func (c *Controller) syncHandler(key string) error {
}

// For each pool check if there is a stateful set
var totalReplicas int32
var totalAvailableReplicas int32
var images []string

err = c.checkKESStatus(ctx, tenant, totalReplicas, cOpts, uOpts, nsName)
err = c.checkKESStatus(ctx, tenant, totalAvailableReplicas, cOpts, uOpts, nsName)
if err != nil {
klog.V(2).Infof("Error checking KES state %v", err)
return err
Expand Down Expand Up @@ -972,7 +972,7 @@ func (c *Controller) syncHandler(key string) error {
}

// keep track of all replicas
totalReplicas += ss.Status.Replicas
totalAvailableReplicas += ss.Status.AvailableReplicas
images = append(images, ss.Spec.Template.Spec.Containers[0].Image)
}

Expand Down Expand Up @@ -1053,7 +1053,7 @@ func (c *Controller) syncHandler(key string) error {
compareImage = image
}
if compareImage != image {
if _, err = c.updateTenantStatus(ctx, tenant, StatusInconsistentMinIOVersions, totalReplicas); err != nil {
if _, err = c.updateTenantStatus(ctx, tenant, StatusInconsistentMinIOVersions, totalAvailableReplicas); err != nil {
return err
}
return fmt.Errorf("Pool %d is running incorrect image version, all pools are required to be on the same MinIO version. Attempting update of the inconsistent pool",
Expand Down Expand Up @@ -1081,7 +1081,7 @@ func (c *Controller) syncHandler(key string) error {

// Images different with the newer state change, continue to verify
// if upgrade is possible
tenant, err = c.updateTenantStatus(ctx, tenant, StatusUpdatingMinIOVersion, totalReplicas)
tenant, err = c.updateTenantStatus(ctx, tenant, StatusUpdatingMinIOVersion, totalAvailableReplicas)
if err != nil {
return err
}
Expand All @@ -1105,7 +1105,7 @@ func (c *Controller) syncHandler(key string) error {
_ = c.removeArtifacts()

err = fmt.Errorf("Unable to get canonical update URL for Tenant '%s', failed with %v", tenantName, err)
if _, terr := c.updateTenantStatus(ctx, tenant, err.Error(), totalReplicas); terr != nil {
if _, terr := c.updateTenantStatus(ctx, tenant, err.Error(), totalAvailableReplicas); terr != nil {
return terr
}

Expand All @@ -1121,7 +1121,7 @@ func (c *Controller) syncHandler(key string) error {
_ = c.removeArtifacts()

err = fmt.Errorf("Tenant '%s' MinIO update failed with %w", tenantName, err)
if _, terr := c.updateTenantStatus(ctx, tenant, err.Error(), totalReplicas); terr != nil {
if _, terr := c.updateTenantStatus(ctx, tenant, err.Error(), totalAvailableReplicas); terr != nil {
return terr
}

Expand Down Expand Up @@ -1152,7 +1152,7 @@ func (c *Controller) syncHandler(key string) error {
tenantName,
us.CurrentVersion)
klog.Info(msg)
if _, terr := c.updateTenantStatus(ctx, tenant, msg, totalReplicas); terr != nil {
if _, terr := c.updateTenantStatus(ctx, tenant, msg, totalAvailableReplicas); terr != nil {
return err
}
return nil
Expand Down Expand Up @@ -1301,7 +1301,7 @@ func (c *Controller) syncHandler(key string) error {

// Finally, we update the status block of the Tenant resource to reflect the
// current state of the world
_, err = c.updateTenantStatus(ctx, tenant, StatusInitialized, totalReplicas)
_, err = c.updateTenantStatus(ctx, tenant, StatusInitialized, totalAvailableReplicas)
return err
}

Expand Down

0 comments on commit 5ef838a

Please sign in to comment.