package lock import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/redis/redis_key" "code.gitea.io/gitea/modules/redis/redis_lock" "time" ) 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, string(models.JobTypeDebug))) isOk, err := lock.Lock(5 * time.Minute) if !isOk { log.Error("CloudbrainDisplayJobNameLock lock failed:%v", err) return "you have already a running or waiting task, can not create more" } return "" } func (c CloudbrainUniquenessLock) Unlock(ctx *LockContext) error { lock := redis_lock.NewDistributeLock(redis_key.CloudbrainUniquenessKey(ctx.User.ID, string(models.JobTypeDebug))) return lock.UnLock() }