Skip to content

[DO NOT MERGE] - testing a possible bug#4808

Open
kunalmemane wants to merge 3 commits intoopenshift:mainfrom
kunalmemane:dnm-buildbug
Open

[DO NOT MERGE] - testing a possible bug#4808
kunalmemane wants to merge 3 commits intoopenshift:mainfrom
kunalmemane:dnm-buildbug

Conversation

@kunalmemane
Copy link
Copy Markdown
Member

DO NOT MERGE - testing a possible bug

@kunalmemane
Copy link
Copy Markdown
Member Author

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 5, 2025
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Nov 5, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: kunalmemane
Once this PR has been reviewed and has the lgtm label, please assign smg247 for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 5, 2025

Walkthrough

Added a top-level DO NOT MERGE warning to README; changed ManifestPusher API to return a digest and updated callers/tests; modified image push flow to capture manifest digest and wait for ImageStream tag to match that digest; removed an explicit 1-minute sleep from build creation retry loop.

Changes

Cohort / File(s) Summary
Documentation notice
README.md
Added a blank line and top-level warning text: "DO NOT MERGE - investigating a possible bug".
Manifest pusher interface & impl
pkg/manifestpusher/manifestpusher.go
Changed PushImageWithManifest signature to return (string, error) and updated implementation to return the pushed manifest digest on success.
Callers updated
pkg/controller/multiarchbuildconfig/multiarchbuildconfig.go, pkg/controller/multiarchbuildconfig/multiarchbuildconfig_test.go
Updated caller and test mock to match new PushImageWithManifest signature; test mock now returns ("", err) when simulating errors.
Build push & wait flow
pkg/steps/source.go
handleBuilds now captures digest from PushImageWithManifest and, when output image includes a tag, polls the OpenShift ImageStream tag until its first item's image equals the pushed digest; removed the fixed 1-minute sleep previously present before build creation in the retry loop.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch dnm-buildbug

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
README.md (1)

5-6: Ensure proper file formatting before merge.

The warning message is appropriately placed, and the /hold status correctly prevents merging. However, per the diff context, the file appears to be missing a newline at the end. Standard practice is to include a trailing newline at end-of-file.

Apply this diff to add a trailing newline:

-DO NOT MERGE - investigating a possible bug. 
+DO NOT MERGE - investigating a possible bug.

Additionally, once the underlying issue is resolved, remember to remove this temporary warning message and the preceding blank line before merging.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between e6cf944 and 3903ad3.

📒 Files selected for processing (1)
  • README.md (1 hunks)

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 3903ad3 and 411d5a6.

📒 Files selected for processing (1)
  • pkg/steps/source.go (1 hunks)

Comment thread pkg/steps/source.go Outdated
@liangxia
Copy link
Copy Markdown
Contributor

/uncc

@openshift-ci openshift-ci Bot removed the request for review from liangxia January 23, 2026 08:35
@kunalmemane
Copy link
Copy Markdown
Member Author

/retest

1 similar comment
@kunalmemane
Copy link
Copy Markdown
Member Author

/retest

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 27, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Mar 27, 2026

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
pkg/steps/source.go (1)

523-527: Consider resilience to transient API errors in the polling loop.

If buildClient.Get() fails with a transient error (network blip, API server restart), the current code returns false, err which terminates the backoff immediately and fails the build. For improved reliability, consider returning false, nil for transient/retriable errors to allow the backoff to continue.

♻️ Suggested improvement
 			if err := wait.ExponentialBackoff(wait.Backoff{Duration: 10 * time.Second, Factor: 1.5, Steps: 10}, func() (bool, error) {
 				is := &imagev1.ImageStream{}
 				if err := buildClient.Get(ctx, ctrlruntimeclient.ObjectKey{Namespace: ns, Name: isName}, is); err != nil {
-					return false, err
+					if kerrors.IsNotFound(err) {
+						return false, err // ImageStream doesn't exist - permanent failure
+					}
+					logrus.WithError(err).Warnf("Transient error fetching imagestream %s/%s, retrying", ns, isName)
+					return false, nil // Retry on transient errors
 				}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/steps/source.go` around lines 523 - 527, The polling lambda passed to
wait.ExponentialBackoff currently returns (false, err) on any buildClient.Get
failure which stops retries; change the handler in the wait.ExponentialBackoff
call so that when buildClient.Get(ctx, ctrlruntimeclient.ObjectKey{Namespace:
ns, Name: isName}, is) returns a transient/retriable error (e.g.,
apierrors.IsTimeout(err), apierrors.IsServerTimeout(err),
apierrors.IsTooManyRequests(err), or net.Error with Temporary() == true) you
return (false, nil) to continue the backoff, but for non-retriable errors return
(false, err); update imports to include k8s.io/apimachinery/pkg/api/errors and
handle net.Error checks accordingly while keeping the rest of the logic around
imagev1.ImageStream intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@pkg/steps/source.go`:
- Around line 523-527: The polling lambda passed to wait.ExponentialBackoff
currently returns (false, err) on any buildClient.Get failure which stops
retries; change the handler in the wait.ExponentialBackoff call so that when
buildClient.Get(ctx, ctrlruntimeclient.ObjectKey{Namespace: ns, Name: isName},
is) returns a transient/retriable error (e.g., apierrors.IsTimeout(err),
apierrors.IsServerTimeout(err), apierrors.IsTooManyRequests(err), or net.Error
with Temporary() == true) you return (false, nil) to continue the backoff, but
for non-retriable errors return (false, err); update imports to include
k8s.io/apimachinery/pkg/api/errors and handle net.Error checks accordingly while
keeping the rest of the logic around imagev1.ImageStream intact.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 935bb2bf-3381-4580-b4b9-2750ac174897

📥 Commits

Reviewing files that changed from the base of the PR and between 411d5a6 and 9d620cb.

📒 Files selected for processing (4)
  • pkg/controller/multiarchbuildconfig/multiarchbuildconfig.go
  • pkg/controller/multiarchbuildconfig/multiarchbuildconfig_test.go
  • pkg/manifestpusher/manifestpusher.go
  • pkg/steps/source.go

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Mar 31, 2026

@kunalmemane: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/format 9d620cb link true /test format
ci/prow/breaking-changes 9d620cb link false /test breaking-changes
ci/prow/images 9d620cb link true /test images
ci/prow/frontend-checks 9d620cb link true /test frontend-checks
ci/prow/validate-vendor 9d620cb link true /test validate-vendor
ci/prow/unit 9d620cb link true /test unit
ci/prow/integration 9d620cb link true /test integration
ci/prow/checkconfig 9d620cb link true /test checkconfig
ci/prow/lint 9d620cb link true /test lint
ci/prow/security 9d620cb link false /test security
ci/prow/codegen 9d620cb link true /test codegen
ci/prow/validate-prow 9d620cb link true /test validate-prow

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants