You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

cloudbrain_name_lock.go 967 B

12345678910111213141516171819202122232425262728293031
  1. package lock
  2. import (
  3. "code.gitea.io/gitea/models"
  4. "code.gitea.io/gitea/modules/log"
  5. "code.gitea.io/gitea/modules/redis/redis_key"
  6. "code.gitea.io/gitea/modules/redis/redis_lock"
  7. "fmt"
  8. )
  9. type CloudbrainDisplayJobNameLock struct {
  10. }
  11. func (c CloudbrainDisplayJobNameLock) IsMatch(ctx *LockContext) bool {
  12. return true
  13. }
  14. func (c CloudbrainDisplayJobNameLock) Lock(ctx *LockContext) string {
  15. lock := redis_lock.NewDistributeLock(redis_key.CloudbrainBindingJobNameKey(fmt.Sprint(ctx.Repo.ID), ctx.Task.JobType, ctx.Task.DisplayJobName))
  16. isOk, err := lock.Lock(models.CloudbrainKeyDuration)
  17. if !isOk {
  18. log.Error("CloudbrainDisplayJobNameLock lock failed:%v", err)
  19. return "repo.cloudbrain_samejob_err"
  20. }
  21. return ""
  22. }
  23. func (c CloudbrainDisplayJobNameLock) Unlock(ctx *LockContext) error {
  24. lock := redis_lock.NewDistributeLock(redis_key.CloudbrainBindingJobNameKey(fmt.Sprint(ctx.Repo.ID), ctx.Task.JobType, ctx.Task.DisplayJobName))
  25. return lock.UnLock()
  26. }