From 479e2ae307c0ca7e0a826e54df6bcc7676445e35 Mon Sep 17 00:00:00 2001 From: Kevin Delgado Date: Tue, 27 Jul 2021 01:25:03 +0000 Subject: [PATCH] wrap extractor errors --- .../applyconfigurations/meta/v1/unstructured.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/unstructured.go b/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/unstructured.go index 8368a4df16ee..e57801d0af20 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/unstructured.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/meta/v1/unstructured.go @@ -1,6 +1,7 @@ package v1 import ( + "fmt" "sync" "time" @@ -59,7 +60,7 @@ func (c *gvkParserCache) objectTypeForGVK(gvk schema.GroupVersionKind) (*typed.P defer c.mu.Unlock() // if the ttl on the openAPISchema has expired, // regenerate the gvk parser - if time.Now().After(c.lastChecked.Add(openAPISchemaTTL)) { + if time.Since(c.lastChecked) > openAPISchemaTTL { c.lastChecked = time.Now() parser, err := regenerateGVKParser(c.discoveryClient) if err != nil { @@ -77,11 +78,9 @@ type extractor struct { // NewUnstructuredExtractor creates the extractor with which you can extract the applied configuration // for a given manager from an unstructured object. func NewUnstructuredExtractor(dc discovery.DiscoveryInterface) (UnstructuredExtractor, error) { - // TODO: expose ttl as an argument if we want to. - parser, err := regenerateGVKParser(dc) if err != nil { - return nil, err + return nil, fmt.Errorf("failed generating initial GVK Parser: %v", err) } return &extractor{ cache: &gvkParserCache{ @@ -108,12 +107,12 @@ func (e *extractor) extractUnstructured(object *unstructured.Unstructured, field gvk := object.GetObjectKind().GroupVersionKind() objectType, err := e.cache.objectTypeForGVK(gvk) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to fetch the objectType: %v", err) } result := &unstructured.Unstructured{} err = managedfields.ExtractInto(object, *objectType, fieldManager, result, subresource) if err != nil { - return nil, err + return nil, fmt.Errorf("failed calling ExtractInto for unstructured: %v", err) } result.SetName(object.GetName()) result.SetNamespace(object.GetNamespace())