What happened?
When helm is creating a resource using server side apply it does not retry after retry conflict with resource quota.
Context:
This was a fix for k8s issue kubernetes/kubernetes#67761
In #9710 and #9713 this was fixed for the client-side create function and the fix is still present in https://github.com/helm/helm/blob/v4.1.4/pkg/kube/client.go#L989
However in 4.x a makeCreateApplyFunc was introduced which if using server-side apply returns a create func without the support for retry mechanism.
So the issue is that server-side apply branch of create func does not incorporate the confict retry mechanism.
What did you expect to happen?
I was expecting retry mechanism to be consistent across versions and apply mechanisms.
How can we reproduce it (as minimally and precisely as possible)?
Deploy a helm chart with a large amount of resources in a project with quota, using server-side apply.
Helm version
Details
version.BuildInfo{Version:"v4.1.1", GitCommit:"5caf0044d4ef3d62a955440272999e139aafbbed", GitTreeState:"", GoVersion:"go1.25.7 X:nodwarf5", KubeClientVersion:"v1.35"}
Kubernetes version
Details
Client Version: v1.35.2
Kustomize Version: v5.7.1
Server Version: v1.34.6
What happened?
When helm is creating a resource using server side apply it does not retry after retry conflict with resource quota.
Context:
This was a fix for k8s issue kubernetes/kubernetes#67761
In #9710 and #9713 this was fixed for the client-side create function and the fix is still present in https://github.com/helm/helm/blob/v4.1.4/pkg/kube/client.go#L989
However in
4.xamakeCreateApplyFuncwas introduced which if using server-side apply returns a create func without the support for retry mechanism.So the issue is that server-side apply branch of create func does not incorporate the confict retry mechanism.
What did you expect to happen?
I was expecting retry mechanism to be consistent across versions and apply mechanisms.
How can we reproduce it (as minimally and precisely as possible)?
Deploy a helm chart with a large amount of resources in a project with quota, using server-side apply.
Helm version
Details
version.BuildInfo{Version:"v4.1.1", GitCommit:"5caf0044d4ef3d62a955440272999e139aafbbed", GitTreeState:"", GoVersion:"go1.25.7 X:nodwarf5", KubeClientVersion:"v1.35"}Kubernetes version
Details