Deduplicate step docker container volumes (#1571)

Try to fix #1495

It's very hard to reproduce it and only way to fix when it gets in this
state is woodpecker agent restart.

This anyway fixes problem if step mounts and
`WOODPECKER_BACKEND_DOCKER_VOLUMES` conflict
This commit is contained in:
Lauris BH
2023-01-31 22:33:40 +02:00
committed by GitHub
parent 4c97a0104e
commit f26a87acce
2 changed files with 18 additions and 14 deletions

View File

@@ -15,20 +15,24 @@
package utils
// DedupStrings deduplicate string list, empty items are dropped
func DedupStrings(list []string) []string {
m := make(map[string]struct{}, len(list))
func DedupStrings(src []string) []string {
m := make(map[string]struct{}, len(src))
dst := make([]string, 0, len(src))
for i := range list {
if s := list[i]; len(s) > 0 {
m[list[i]] = struct{}{}
for _, v := range src {
// Skip empty items
if len(v) == 0 {
continue
}
// Skip duplicates
if _, ok := m[v]; ok {
continue
}
m[v] = struct{}{}
dst = append(dst, v)
}
newList := make([]string, 0, len(m))
for k := range m {
newList = append(newList, k)
}
return newList
return dst
}
// EqualStringSlice compare two string slices if they have equal values independent of how they are sorted