修改总结
新增文件
SyncLockType.java - 同步锁类型枚举,定义了 JENKINS_SYNC、GITLAB_SYNC、K8S_SYNC 三种锁类型
修改文件
文件	修改内容
SyncLockManager.java	新增 tryLock(SyncLockType, Object...) 和 unlock(SyncLockType, Object...) 方法,支持显式指定锁类型
JenkinsViewServiceImpl.java	syncViews 改用 SyncLockType.JENKINS_SYNC
JenkinsJobServiceImpl.java	syncJobs 两个重载方法都改用 SyncLockType.JENKINS_SYNC,锁粒度统一为 externalSystemId
JenkinsBuildServiceImpl.java	syncBuilds 改用 SyncLockType.JENKINS_SYNC
This commit is contained in:
dengqichen 2025-12-31 14:02:56 +08:00
parent 9f3353e54a
commit 3fa1d53368

View File

@ -0,0 +1,44 @@
package com.qqchen.deploy.backend.deploy.lock;
/**
* 同步锁类型枚举
* <p>用于跨方法/跨服务协调同步任务避免并发冲突</p>
*
* <p>使用场景当多个服务/方法需要操作同一资源时使用相同的锁类型来保证串行执行</p>
*
* <p>示例Jenkins的ViewJobBuild同步都会操作JenkinsJob表
* 因此它们应该使用同一个锁类型 JENKINS_SYNC</p>
*/
public enum SyncLockType {
/**
* Jenkins同步锁
* <p>用于syncViews, syncJobs, syncBuilds</p>
* <p>锁粒度externalSystemId</p>
*/
JENKINS_SYNC("jenkins-sync"),
/**
* GitLab/Git仓库同步锁
* <p>用于syncGroups, syncProjects, syncBranches</p>
* <p>锁粒度externalSystemId</p>
*/
GITLAB_SYNC("gitlab-sync"),
/**
* K8s同步锁
* <p>用于syncNamespaces, syncDeployments</p>
* <p>锁粒度externalSystemId</p>
*/
K8S_SYNC("k8s-sync");
private final String key;
SyncLockType(String key) {
this.key = key;
}
public String getKey() {
return key;
}
}