GitLab Omnibus 14.3.6及以上版本Merge requests无法正常完成
问题概述
Omnibus部署的GitLab从14.0.12版本升级至14.3.6及更高版本后,合并请求(Merge requests)页面右侧边栏的指派人(assignee)、审核人(reviewer)、时间追踪(time tracking)面板持续无限加载转圈,有对应异常界面记录;回退至14.0.12版本后功能恢复正常。已逐一核查版本发行说明、服务运行日志、网络抓包数据,未找到有效问题线索。
排查方向指引
- 校验升级路径合规性:14.x系列版本不支持从14.0.12直接跳级升级到14.3.6,需严格遵循
14.0.12 -> 14.1最新补丁版 -> 14.2最新补丁版 -> 14.3.6的路径逐次升级,跳级升级会导致部分后置数据库迁移、后台服务初始化逻辑未触发,且这类异常不会在常规服务日志中抛出显性报错。 - 核查数据库迁移完成状态:14.1-14.3版本迭代中新增了合并请求元数据字段、指派/审核人关联表索引、时间统计字段的相关数据库迁移,静默未执行的迁移不会触发服务级报错。执行命令
sudo gitlab-rake db:migrate:status,检查所有迁移项状态,重点筛选关联merge_requests、assignees、reviewers、time_tracking表的迁移条目,若存在状态不为up的项,执行sudo gitlab-rake db:migrate完成全量迁移后,重启服务验证功能。 - 检查Sidekiq后台任务状态:合并请求侧边栏的用户列表、时间统计数据依赖Sidekiq异步渲染加载,14.3版本调整了该模块的任务队列优先级,升级后若队列存在堆积、任务失败会导致面板无限加载。进入GitLab管理区「监控-后台任务」页面,查看
merge_requests、user_lookup、time_tracking相关队列的堆积长度、失败任务数,存在异常时可先执行sudo gitlab-ctl restart sidekiq重启服务消费堆积任务,再根据失败任务的报错栈定位具体根因。 - 排查静态资源缓存不兼容问题:14.3版本重构了合并请求侧边栏的前端组件,若前置反向代理、CDN或本地浏览器缓存了旧版本的JS/CSS静态资源,会导致前端请求参数、路径与新版本后端逻辑不匹配,触发无限加载。优先使用浏览器隐私模式清空本地缓存访问验证,若服务前置了自定义Nginx、CDN,清空对应静态资源缓存,执行
sudo gitlab-ctl reconfigure && sudo gitlab-ctl hup nginx重载Omnibus自带Nginx配置后验证。 - 校验侧边栏关联接口的响应内容:抓包时不要仅核查请求状态码,打开浏览器开发者工具网络面板,筛选项目下合并请求关联的API子请求,重点查看状态码为200但返回体结构缺失字段、或状态码为500的侧边栏加载请求,从响应体内容中可定位到字段缺失、权限校验异常等被通用日志过滤的隐性错误。
- 核查功能开关(Feature Flag)状态:14.3版本的合并请求新侧边栏组件通过功能开关灰度发布,升级过程中若开关状态同步异常,会出现前端加载新组件但后端未开放对应接口支持的问题。执行
sudo gitlab-rails console进入Rails控制台,执行Feature.enabled?(:mr_sidebar_new_widget)查询开关状态,若返回值与版本默认配置不符,可执行Feature.enable(:mr_sidebar_new_widget)开启对应开关后重启服务验证。
内容的提问来源于stack exchange,提问作者rabbitpew
相关产品推荐
相关产品推荐

