/
githubmirror
/
traefik
Обзор
Документация
Войти
/
githubmirror
/
traefik
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
pkg/server/recursion/recursion.go
26 строк
622 B
Julien Salleyron
Avoid recursion with services
26 янв 2026, 12:28
Не верифицирован
26 янв 2026, 12:28
85cd548
Код
Авторство
О чём код?
package recursion import ( "context" "fmt" "slices" "strings" ) type stackType int const ( stackKey stackType = iota ) func CheckRecursion(ctx context.Context, itemType, itemName string) (context.Context, error) { currentStack, ok := ctx.Value(stackKey).([]string) if !ok { currentStack = []string{} } name := itemType + ":" + itemName if slices.Contains(currentStack, name) { return ctx, fmt.Errorf("could not instantiate %s %s: recursion detected in %s", itemType, itemName, strings.Join(append(currentStack, name), "->")) } return context.WithValue(ctx, stackKey, append(currentStack, name)), nil }