You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab为何在新Jira实例的ABC-500自动生成历史提交评论?

问题描述

我拥有1台自托管GitLab服务器和2台自托管Jira实例(命名为Jira A和Jira B),两者均存在以ABC为前缀的项目(如ABC-1、ABC-2等)。

  • 最初GitLab与Jira A集成,曾在Jira A的ABC-500工单中自动创建评论,内容为John在main分支的提交中提及该工单的合并信息。
  • 约8个月前,我将GitLab的集成切换至Jira B,当时Jira B的ABC项目最高工单号小于500。
  • 约7天前Jira B创建了ABC-500工单,2天后GitLab自动在该工单中创建了与Jira A中完全相同的评论,而提及ABC-500的提交自创建后从未更新。

时间线:

Gitlab created a comment in ABC-500 in Jira A                              ABC-500 in Jira B created
-------------|----------------------------------|------------------------------------|-------------------|-------------------------> time
                              Integration changed from Jira A to Jira B                 Gitlab created a comment in ABC-500 in Jira B

同时在日志文件 /var/log/gitlab/sidekiq/@40000000667c46d930ba2cac.u 中发现,ProcessCommitWorker 在2024-06-26T07:23:34.958Z处理了2023-10-20创建的旧提交,寻求该触发原因。

日志内容:

{"severity":"INFO","time":"2024-06-26T07:23:37.026Z","retry":3,"queue":"default","version":0,"store":null,"args":["242","60","{\"id\":=\u003e\"ba678de2d52a1aacdac5c95175b1b772c03f84dc\", \"message\":=\u003e\"Merge branch 'bugfix/feature1' into 'main'\\n\\ncommit message ABC-500\\n\\nSee merge request Folder1/project_name!5557\", \"parent_ids\":=\u003e[\"9404db120f6406a85743603b0835df34226608b5\", \"8ec25da1f1433b823802dbcabea3267650da4a63\"], \"authored_date\":=\u003e\"2023-10-20 15:42:32 +0800\", \"author_name\":=\u003e\"User Name\", \"author_email\":=\u003e\"user_name@mycompany.com\", \"committed_date\":=\u003e\"2023-10-20 15:42:32 +0800\", \"committer_name\":=\u003e\"User Name\", \"committer_email\":=\u003e\"user_name@mycompany.com\", \"trailers\":=\u003e{}, \"extended_trailers\":=\u003e{}, \"referenced_by\":=\u003e[]}","false"],"class":"ProcessCommitWorker","jid":"18032aa8e7a2c1129d28ee8e","created_at":"2024-06-26T07:23:34.958Z","correlation_id":"01J19PVA8Y3107P958PASAQP2W","meta.caller_id":"PostReceive","meta.remote_ip":"127.0.0.1","meta.feature_category":"source_code_management","meta.user":"user_name","meta.user_id":60,"meta.project":"Folder1/project_name","meta.root_namespace":"Folder1","meta.client_id":"user/60","meta.root_caller_id":"POST /api/:version/internal/post_receive","worker_data_consistency":"always","size_limiter":"validated","enqueued_at":"2024-06-26T07:23:34.959Z","job_size_bytes":638,"pid":548,"message":"ProcessCommitWorker JID-18032aa8e7a2c1129d28ee8e: start","job_status":"start","scheduling_latency_s":2.067695}
原因分析

1. GitLab重复评论Jira B的ABC-500工单的原因

  • GitLab内部仅记录提交中提及的Jira工单编号前缀+数字,不会关联具体的Jira实例。切换到Jira B后,之前针对ABC-500的引用记录并未被清除。
  • 当Jira B创建ABC-500工单时,GitLab的Jira集成会自动扫描新创建的工单,匹配到历史提交中已存在的ABC-500引用,触发了评论逻辑,生成了和Jira A中相同的评论内容。
  • 也可能是GitLab的Jira相关后台任务(如JiraIssueWorker)在工单创建后执行了回溯检查,遍历所有包含ABC-500引用的历史提交,进而触发评论操作。

2. 旧提交被ProcessCommitWorker重新处理的原因

从日志的meta.root_caller_id: POST /api/:version/internal/post_receive可以确定,此次处理由仓库的post-receive事件触发,常见场景包括:

  • 执行了git push操作,即使是推送已存在的分支(如强制推送、分支标签更新)。
  • GitLab内部维护任务触发(如仓库数据重新同步、分支权限变更引发的重新扫描),触发post-receive钩子导致旧提交被重新处理。
  • 提交的引用关系发生变化(如合并请求重新打开、分支被重新创建),触发ProcessCommitWorker重新执行。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:34:54