package lock import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/redis/redis_key" "code.gitea.io/gitea/modules/redis/redis_lock" "code.gitea.io/gitea/modules/setting" ) type CloudbrainUniquenessLock struct { } func (c CloudbrainUniquenessLock) IsMatch(ctx *LockContext) bool { return true } func (c CloudbrainUniquenessLock) Lock(ctx *LockContext) string { lock := redis_lock.NewDistributeLock(redis_key.CloudbrainUniquenessKey(ctx.User.ID, ctx.Task.JobType)) isOk, err := lock.Lock(setting.CloudbrainUniquenessLockTime) if !isOk { log.Error("CloudbrainDisplayJobNameLock lock failed:%v", err) return "repo.cloudbrain.morethanonejob" } return "" } func (c CloudbrainUniquenessLock) Unlock(ctx *LockContext) error { lock := redis_lock.NewDistributeLock(redis_key.CloudbrainUniquenessKey(ctx.User.ID, ctx.Task.JobType)) return lock.UnLock() }