csharp
csharp copied to clipboard
KubernetesJson.Serialize fails due to null JsonSerializerInfo for V1Patch
Describe the bug
It looks like SourceGenerationContext lacks JSON serialization metadata for the V1Patch type, which causes patch requests to fail in AOT scenarios.
Kubernetes C# SDK Client Version
15.0.1
Server Kubernetes Version
1.30.0
Dotnet Runtime Version
net9.0, though this is likely reproducible across AOT compatible TFM's
To Reproduce
Attempt to patch some k8s config using one of the Patch... methods on the Kubernetes client that takes V1Patch while using the Kubernetes.Aot package.
Expected behavior Configuration to update successfully.
Where do you run your app with Kubernetes SDK (please complete the following information):
- OS: Windows
- Environment: Local (Desktop, ARM Laptop)
- Cloud: No, local cluster
Additional context
I've fixed this in a local version of the package by just adding a second JsonSerializerContext just for V1Patch, and in KubernetesJson.Serialize checking both contexts for type info (commit):
var info = SourceGenerationContext.Default.GetTypeInfo(value.GetType()) ?? LocalSgContext.Default.GetTypeInfo(value.GetType());
I appreciate this is a suboptimal solution. Unfortunately I get build errors adding V1Patch to SourceGenerationContext.