aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/update_prepare_lock.go
blob: 67db9628c87e0f56097f09f8738b3977cb125880 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package files

import "slices"

func (executor *refUpdateExecutor) prepareUpdateLocks(prepared []preparedUpdate) error {
	lockNames := make([]string, 0, len(prepared))
	for _, item := range prepared {
		lockNames = append(lockNames, updateTargetKey(item.target.loc))
	}

	slices.Sort(lockNames)

	for _, lockKey := range lockNames {
		lockPath := refPathFromKey(lockKey)

		err := executor.createUpdateLock(lockPath)
		if err != nil {
			for _, item := range prepared {
				if updateTargetKey(item.target.loc) == lockKey {
					return wrapUpdateError(item.op.name, err)
				}
			}

			return err
		}
	}

	return nil
}