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_uniqueness_lock.go 882 B

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