From 076ed224ad7f3cc0c83c7a1eba167a99cbfaad34 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Mon, 29 Jan 2024 11:02:10 -0700 Subject: [PATCH 1/3] Attempt to fix Sentry errors Issues: - No replication steps - No consistent errors (associated Sentry link in issue is not found) - MRs not even primary cause of this type of error (it's mostly the Issuable Popover in Issues reading `issue`, not `mergeRequest`) Given the exact error that _had been_ reported ("Cannot read properties of null (reading 'mergeRequest')", these tweaks may help prevent a handful (literally: 5-10 over two weeks) of errors. --- .../javascripts/issuable/popover/components/mr_popover.vue | 2 +- .../components/states/mr_widget_conflicts.vue | 2 +- .../components/states/ready_to_merge.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/issuable/popover/components/mr_popover.vue b/app/assets/javascripts/issuable/popover/components/mr_popover.vue index 25a40f63de3e66..dee7d8309e83c8 100644 --- a/app/assets/javascripts/issuable/popover/components/mr_popover.vue +++ b/app/assets/javascripts/issuable/popover/components/mr_popover.vue @@ -74,7 +74,7 @@ export default { apollo: { mergeRequest: { query, - update: (data) => data.project.mergeRequest, + update: (data) => data.project?.mergeRequest || {}, variables() { const { namespacePath, iid } = this; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue index d2c1c914028933..244d2846bc611e 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue @@ -22,7 +22,7 @@ export default { variables() { return this.mergeRequestQueryVariables; }, - update: (data) => data.project?.mergeRequest.userPermissions || {}, + update: (data) => data.project?.mergeRequest?.userPermissions || {}, }, state: { query: conflictsStateQuery, diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index af7453d84d637e..5b58f426cbeaa0 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -65,7 +65,7 @@ export default { }, manual: true, result({ data }) { - if (!data.project) { + if (!data?.project?.mergeRequest) { return; } -- GitLab From 6c60d4aa9c6aa7ca31fa88e4cc99dc150b5384c6 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Fri, 9 Feb 2024 08:52:00 -0700 Subject: [PATCH 2/3] Fix read error on mergeabilityChecks when GQL returns void state --- .../vue_merge_request_widget/components/merge_checks.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue b/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue index 4578aa941cdcf5..976226328fcb83 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/merge_checks.vue @@ -100,7 +100,7 @@ export default { ); }, checks() { - return this.state.mergeabilityChecks || []; + return this.state?.mergeabilityChecks || []; }, sortedChecks() { const order = ['FAILED', 'SUCCESS']; -- GitLab From d03d851e3cbbec488def610de4b9dccac6034543 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Fri, 9 Feb 2024 08:57:06 -0700 Subject: [PATCH 3/3] Add fallback for when GQL returns a void project in issue_popover --- .../javascripts/issuable/popover/components/issue_popover.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/issuable/popover/components/issue_popover.vue b/app/assets/javascripts/issuable/popover/components/issue_popover.vue index 12d76ec4b548fb..236a0a947715b2 100644 --- a/app/assets/javascripts/issuable/popover/components/issue_popover.vue +++ b/app/assets/javascripts/issuable/popover/components/issue_popover.vue @@ -64,7 +64,7 @@ export default { apollo: { issue: { query, - update: (data) => data.project.issue, + update: (data) => data.project?.issue || {}, variables() { const { namespacePath, iid } = this; -- GitLab