fix: handle operator crash when using workloadRef #989
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This MR fixes issue #751 where restarting an Argo Rollout configured with workloadRef causes the Reloader operator pod to crash with a panic: "runtime error: index out of range [0] with length 0".
Root Cause
The issue occurs because Argo Rollouts using workloadRef reference an existing Deployment/ReplicaSet instead of defining containers directly in their Spec.Template.Spec.Containers. When the GetRolloutContainers function is called for such rollouts, it returns an empty slice since no containers are defined in the rollout template itself.
The panic happens in the getContainerUsingResource function in upgrade.go when the code attempts to access containers[0] without first checking if the slice contains any elements.
Solution
Added bounds checking before accessing the first element of the containers slice to prevent index out of range panics.
Related Issues
Closes #751