diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 1d0affd93..3db777698 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -563,6 +563,7 @@ func recAllTpls(c ci.Charter, templates map[string]renderable, values common.Val accessor, err := ci.NewAccessor(c) if err != nil { slog.Error("error accessing chart", "error", err) + return nil } chartMetaData := accessor.MetadataAsMap() chartMetaData["IsRoot"] = accessor.IsRoot() @@ -585,8 +586,11 @@ func recAllTpls(c ci.Charter, templates map[string]renderable, values common.Val } for _, child := range accessor.Dependencies() { - // TODO: Handle error - sub, _ := ci.NewAccessor(child) + sub, err := ci.NewAccessor(child) + if err != nil { + slog.Error("error accessing dependency", "dependency", child, "error", err) + continue + } subCharts[sub.Name()] = recAllTpls(child, templates, next) } diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index d5d2ea317..96314d638 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -126,10 +126,8 @@ func (s *Storage) ListUninstalled() ([]release.Releaser, error) { return s.List(func(rls release.Releaser) bool { rel, err := releaserToV1Release(rls) if err != nil { - // This will only happen if calling code does not pass the proper types. This is - // a problem with the application and not user data. - s.Logger().Error("unable to convert release to typed release", slog.Any("error", err)) - panic(fmt.Sprintf("unable to convert release to typed release: %s", err)) + s.Logger().Warn("unable to convert release, skipping", slog.Any("error", err)) + return false } return relutil.StatusFilter(common.StatusUninstalled).Check(rel) }) @@ -142,10 +140,8 @@ func (s *Storage) ListDeployed() ([]release.Releaser, error) { return s.List(func(rls release.Releaser) bool { rel, err := releaserToV1Release(rls) if err != nil { - // This will only happen if calling code does not pass the proper types. This is - // a problem with the application and not user data. - s.Logger().Error("unable to convert release to typed release", slog.Any("error", err)) - panic(fmt.Sprintf("unable to convert release to typed release: %s", err)) + s.Logger().Warn("unable to convert release, skipping", slog.Any("error", err)) + return false } return relutil.StatusFilter(common.StatusDeployed).Check(rel) })