[Bug] Compliance report shows empty author for some merge events
Problem to solve
As noted by @aregnery on slack (internal link):
The compliance dashboard says merged by is
unknown user
but if I look at the MR it says its John Doe21 , and that user does indeed exist.
Screenshots
Merge request (shows author) | Compliance report (unknown user) |
---|---|
Implementation outline
I managed to get this working by recreating the merge request metrics when the merged_by_id
is nil, see the patch:
Patch
diff --git a/ee/app/serializers/merge_request_compliance_entity.rb b/ee/app/serializers/merge_request_compliance_entity.rb
index e5d5e0e631e..ce60229d65c 100644
--- a/ee/app/serializers/merge_request_compliance_entity.rb
+++ b/ee/app/serializers/merge_request_compliance_entity.rb
@@ -75,7 +75,7 @@ def approval_status
end
def merged_by
- merge_request.metrics.merged_by
+ merge_request_metrics.merged_by
end
def target_branch_uri
@@ -89,4 +89,18 @@ def source_branch_uri
def compliance_management_framework
merge_request.project&.compliance_management_framework
end
+
+ private
+
+ def merge_request_metrics
+ return merge_request.metrics if merge_request.metrics&.merged_by_id
+
+ closed_event = merge_request.closed_event
+ merge_event = merge_request.merge_event
+
+ MergeRequest::Metrics.new(latest_closed_at: closed_event&.updated_at,
+ latest_closed_by: closed_event&.author,
+ merged_at: merge_event&.updated_at,
+ merged_by: merge_event&.author)
+ end
end
The merge_request_metrics
method could be shared with merge_request_poll_cached_widget_entity.rb#L172.
I'm unsure why this is even needed? And also it looks like merge_request_poll_cached_widget_entity
has some stale code surrounding the TODO comment.