From 87bcfebc7945c27d3459e66442874306c6c1cb57 Mon Sep 17 00:00:00 2001 From: Windrow14 Date: Thu, 14 Dec 2023 16:41:35 +0800 Subject: Fix Metaserver Panic when Handling POST 2. Signed-off-by: Windrow14 --- .../pkg/metamanager/metaserver/kubernetes/scope/scope.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'edge') diff --git a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go index 579f4886c..85db8956e 100644 --- a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go +++ b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go @@ -6,14 +6,29 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/managedfields" "k8s.io/apiserver/pkg/endpoints/handlers" "k8s.io/client-go/kubernetes/scheme" + "k8s.io/kube-openapi/pkg/validation/spec" "github.com/kubeedge/kubeedge/edge/pkg/metamanager/metaserver/kubernetes/fakers" "github.com/kubeedge/kubeedge/edge/pkg/metamanager/metaserver/kubernetes/serializer" + "sigs.k8s.io/structured-merge-diff/v4/fieldpath" ) func NewRequestScope() *handlers.RequestScope { + fakeTypeConverter, _ := managedfields.NewTypeConverter(make(map[string]*spec.Schema), false) + fakeFieldManager, _ := managedfields.NewDefaultFieldManager( + fakeTypeConverter, + nil, + fakers.NewFakeObjectDefaulter(), + nil, + schema.GroupVersionKind{}, + schema.GroupVersion{}, + "", + make(map[fieldpath.APIVersion]*fieldpath.Set), + ) + requestScope := handlers.RequestScope{ Namer: handlers.ContextBasedNaming{ Namer: meta.NewAccessor(), @@ -32,6 +47,7 @@ func NewRequestScope() *handlers.RequestScope { EquivalentResourceMapper: runtime.NewEquivalentResourceRegistry(), TableConvertor: nil, + FieldManager: fakeFieldManager, Resource: schema.GroupVersionResource{}, Subresource: "", -- cgit v1.2.3 From ef913a0e6a555d5db78cc9160ae1fff0d2cc32ea Mon Sep 17 00:00:00 2001 From: Windrow14 Date: Mon, 18 Dec 2023 11:00:11 +0800 Subject: Fix lint. Signed-off-by: Windrow14 --- edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'edge') diff --git a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go index 85db8956e..d63de61c5 100644 --- a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go +++ b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go @@ -10,10 +10,10 @@ import ( "k8s.io/apiserver/pkg/endpoints/handlers" "k8s.io/client-go/kubernetes/scheme" "k8s.io/kube-openapi/pkg/validation/spec" + "sigs.k8s.io/structured-merge-diff/v4/fieldpath" "github.com/kubeedge/kubeedge/edge/pkg/metamanager/metaserver/kubernetes/fakers" "github.com/kubeedge/kubeedge/edge/pkg/metamanager/metaserver/kubernetes/serializer" - "sigs.k8s.io/structured-merge-diff/v4/fieldpath" ) func NewRequestScope() *handlers.RequestScope { -- cgit v1.2.3 From 397f9133fba44514eacb9b7cfed6124d090f7ff8 Mon Sep 17 00:00:00 2001 From: Windrow14 Date: Mon, 18 Dec 2023 16:38:45 +0800 Subject: Add return on failure. Signed-off-by: Windrow14 --- edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'edge') diff --git a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go index d63de61c5..5a5582cc9 100644 --- a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go +++ b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go @@ -17,8 +17,11 @@ import ( ) func NewRequestScope() *handlers.RequestScope { - fakeTypeConverter, _ := managedfields.NewTypeConverter(make(map[string]*spec.Schema), false) - fakeFieldManager, _ := managedfields.NewDefaultFieldManager( + fakeTypeConverter, err := managedfields.NewTypeConverter(make(map[string]*spec.Schema), false) + if err != nil { + return nil + } + fakeFieldManager, err := managedfields.NewDefaultFieldManager( fakeTypeConverter, nil, fakers.NewFakeObjectDefaulter(), @@ -28,6 +31,9 @@ func NewRequestScope() *handlers.RequestScope { "", make(map[fieldpath.APIVersion]*fieldpath.Set), ) + if err != nil { + return nil + } requestScope := handlers.RequestScope{ Namer: handlers.ContextBasedNaming{ -- cgit v1.2.3 From 5802d6d9c3a1425f7a344f92943e7e2a8bb1bb73 Mon Sep 17 00:00:00 2001 From: Windrow14 Date: Mon, 18 Dec 2023 17:23:54 +0800 Subject: Add logger for errors. Signed-off-by: Windrow14 --- edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'edge') diff --git a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go index 5a5582cc9..94807b396 100644 --- a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go +++ b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go @@ -1,6 +1,9 @@ package scope import ( + "fmt" + "os" + "k8s.io/apiextensions-apiserver/pkg/crdserverscheme" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,6 +22,7 @@ import ( func NewRequestScope() *handlers.RequestScope { fakeTypeConverter, err := managedfields.NewTypeConverter(make(map[string]*spec.Schema), false) if err != nil { + fmt.Fprintf(os.Stderr, "Failed to create TypeConverter: %v", err) return nil } fakeFieldManager, err := managedfields.NewDefaultFieldManager( @@ -32,6 +36,7 @@ func NewRequestScope() *handlers.RequestScope { make(map[fieldpath.APIVersion]*fieldpath.Set), ) if err != nil { + fmt.Fprintf(os.Stderr, "Failed to create FieldManager: %v", err) return nil } -- cgit v1.2.3 From 107472423cae6df5ddfb9815fd2c826b7434576b Mon Sep 17 00:00:00 2001 From: Windrow14 Date: Wed, 20 Dec 2023 08:50:47 +0800 Subject: Use klog instead of Fprintf. Signed-off-by: Windrow14 --- edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'edge') diff --git a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go index 94807b396..4da87f299 100644 --- a/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go +++ b/edge/pkg/metamanager/metaserver/kubernetes/scope/scope.go @@ -1,9 +1,6 @@ package scope import ( - "fmt" - "os" - "k8s.io/apiextensions-apiserver/pkg/crdserverscheme" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -12,6 +9,7 @@ import ( "k8s.io/apimachinery/pkg/util/managedfields" "k8s.io/apiserver/pkg/endpoints/handlers" "k8s.io/client-go/kubernetes/scheme" + "k8s.io/klog/v2" "k8s.io/kube-openapi/pkg/validation/spec" "sigs.k8s.io/structured-merge-diff/v4/fieldpath" @@ -22,7 +20,7 @@ import ( func NewRequestScope() *handlers.RequestScope { fakeTypeConverter, err := managedfields.NewTypeConverter(make(map[string]*spec.Schema), false) if err != nil { - fmt.Fprintf(os.Stderr, "Failed to create TypeConverter: %v", err) + klog.Errorf("Failed to create TypeConverter: %v\n", err) return nil } fakeFieldManager, err := managedfields.NewDefaultFieldManager( @@ -36,7 +34,7 @@ func NewRequestScope() *handlers.RequestScope { make(map[fieldpath.APIVersion]*fieldpath.Set), ) if err != nil { - fmt.Fprintf(os.Stderr, "Failed to create FieldManager: %v", err) + klog.Errorf("Failed to create FieldManager: %v\n", err) return nil } -- cgit v1.2.3