1.48
修改总结 新增文件 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:
parent
9f3353e54a
commit
3fa1d53368
@ -0,0 +1,44 @@
|
|||||||
|
package com.qqchen.deploy.backend.deploy.lock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步锁类型枚举
|
||||||
|
* <p>用于跨方法/跨服务协调同步任务,避免并发冲突</p>
|
||||||
|
*
|
||||||
|
* <p>使用场景:当多个服务/方法需要操作同一资源时,使用相同的锁类型来保证串行执行</p>
|
||||||
|
*
|
||||||
|
* <p>示例:Jenkins的View、Job、Build同步都会操作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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user