Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initialize Mirroring spec to avoid nil pointer exception #241

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion addons/agent_mirrorpeer_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,9 @@ func (r *MirrorPeerReconciler) toggleMirroring(ctx context.Context, storageClust

// Determine if mirroring should be enabled or disabled
if enabled {
if sc.Spec.Mirroring == nil {
sc.Spec.Mirroring = &ocsv1.MirroringSpec{}
}
oppPeers := getOppositePeerRefs(mp, r.SpokeClusterName)
if hasRequiredSecret(sc.Spec.Mirroring.PeerSecretNames, oppPeers) {
sc.Spec.Mirroring.Enabled = true
Expand All @@ -382,7 +385,7 @@ func (r *MirrorPeerReconciler) toggleMirroring(ctx context.Context, storageClust
return fmt.Errorf("StorageCluster %q does not have required PeerSecrets", storageClusterName)
}
} else {
sc.Spec.Mirroring.Enabled = false
sc.Spec.Mirroring = nil
r.Logger.Info("Mirroring disabled on StorageCluster", "storageClusterName", storageClusterName)
}

Expand Down
2 changes: 1 addition & 1 deletion addons/agent_mirrorpeer_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ func TestDisableMirroring(t *testing.T) {
t.Error("failed to get storage cluster", err)
}

if sc.Spec.Mirroring.Enabled {
if sc.Spec.Mirroring != nil {
t.Error("failed to disable mirroring")
}
}
Expand Down
3 changes: 3 additions & 0 deletions addons/rook_secret_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ func updateStorageCluster(secretName, storageClusterName, storageClusterNamespac
}

// Update secret name
if sc.Spec.Mirroring == nil {
sc.Spec.Mirroring = &ocsv1.MirroringSpec{}
}
Comment on lines +200 to +202
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This place is different from above, the immediate if condition is raising nil pointer exception
if !utils.ContainsString(sc.Spec.Mirroring.PeerSecretNames, secretName)

so it has to be initialized before this line.

if !utils.ContainsString(sc.Spec.Mirroring.PeerSecretNames, secretName) {
sc.Spec.Mirroring.PeerSecretNames = append(sc.Spec.Mirroring.PeerSecretNames, secretName)
err := spokeClient.Update(ctx, sc)
Expand Down