OTA-1159: [3/3] Propagate reconciliation errors via ReconciliationIssues condition#1033
OTA-1159: [3/3] Propagate reconciliation errors via ReconciliationIssues condition#1033petr-muller wants to merge 2 commits intoopenshift:masterfrom
Conversation
|
@petr-muller: This pull request references OTA-1159 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set. DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: petr-muller The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
242ab7a to
cd475fc
Compare
|
/test all |
cd475fc to
f968631
Compare
|
/test all |
862f473 to
f9f59ce
Compare
Known flake |
Previously, the errors that happened during reconciliation were flattened by `summarizeTaskGraphErrors` method call in `consistentReporter.Errors()` before they were sent to status reconciliation method `syncStatus`, which propagates this flattened error to the ClusterVersion status field. Rename the `Failure` field to `FailureSummary`, it still caries the flattened error. Add a new `Failures` field to carry the full slice of the original errors. The error processing is overall a bit weird because the errors get flattened first at the resource reconciling loop side, and then the status reporting loop side uses the flattened error to somehow reconstruct what actually happened, but cleaning up that code would be a much larger effort, so this commit simply makes original errors to be passed to status reporting loop. It is not easy to do all error processing at a single side; it would make sense to do that on status reporting level, but the initial flattening uses some task graph / resource reconciliation data that are not available on the status reporting side.
Fulfilling OTA-1159, this change adds a JSON-serialized form of all reconciliation errors encountered during a single reconciliation loop run to the `Message` field of the `ReconciliationIssues`-type condition, present only when `ReconciliationIssuesCondition` feature gate is enabled (=in tech preview).
f9f59ce to
7e000f0
Compare
|
@petr-muller: This pull request references OTA-1159 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set. DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
1 similar comment
|
@petr-muller: This pull request references OTA-1159 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.16.0" version, but no target version was set. DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
|
@petr-muller: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions 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/test-infra repository. I understand the commands that are listed here. |
|
|
||
| Failure error | ||
| FailureSummary error | ||
| Failures []error |
There was a problem hiding this comment.
I think we can avoid having to pass these in parallel. I've floated #1041 with a sketch showing Unwrap() and Errors() to walk the nested errors inside Failure. It probably needs more filling out with the structured information we store for each node in the tree, but it will avoid us having to worry about things like "what if the actor populating SyncWorkerStatus puts something in FailureSummary without updating Failures to hold the appropriate children?".
|
/close We did #1041 instead |
|
PR needs rebase. DetailsInstructions 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/test-infra repository. |
|
@petr-muller: Closed this PR. DetailsIn response to this:
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/test-infra repository. |
SyncWorkerStatus: Add Failures field with all failures
Previously, the errors that happened during reconciliation were flattened by
summarizeTaskGraphErrorsmethod call inconsistentReporter.Errors()before they were sent to status reconciliation methodsyncStatus, which propagates this flattened error to the ClusterVersion status field.Rename the
Failurefield toFailureSummary, it still caries the flattened error. Add a newFailuresfield to carry the full slice of the original errors.The error processing is overall a bit weird because the errors get flattened first at the resource reconciling loop side, and then the status reporting loop side uses the flattened error to somehow reconstruct what actually happened, but cleaning up that code would be a much larger effort, so this commit simply makes original errors to be passed to status reporting loop. It is not easy to do all error processing at a single side; it would make sense to do that on status reporting level, but the initial flattening uses some task graph / resource reconciliation data that are not available on the status reporting side.
status sync: propagate reconciliation errors via RRI condition
Fulfilling OTA-1159, this change adds a JSON-serialized form of all reconciliation errors encountered during a single reconciliation loop run to the
Messagefield of theReconciliationIssues-type condition, present only whenReconciliationIssuesConditionfeature gate is enabled (=in tech preview).