Skip to content
This repository was archived by the owner on Jan 13, 2026. It is now read-only.
This repository was archived by the owner on Jan 13, 2026. It is now read-only.

Requests for catalog delayed #4919

@absoludity

Description

@absoludity

Describe the bug
While testing #4918 , I noticed an oddity that is causing requests for GetAvailablePackageSummaries to be delayed significantly (up to 16s sometimes:

GetAvailablePackageSummaries-long

While watching the logs for pinniped proxy, I see the delay is because every request is creating a new REST API mapper and I suspect it's being throttled. What I see is that each paginated request results in a bunch of requests to the APi server:

INFO  pinniped_proxy::expired_value_cache > cache hit
 INFO  pinniped_proxy::expired_value_cache > cache hit
 INFO  pinniped_proxy::expired_value_cache > cache hit
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/autoscaling/v2beta2?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/scheduling.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/batch/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/kubeapps.com/v1alpha1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/authentication.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/autoscaling/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/apps/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/discovery.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/events.k8s.io/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/coordination.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/batch/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/flowcontrol.apiserver.k8s.io/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/autoscaling/v2?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/node.k8s.io/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/storage.k8s.io/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/node.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/apiregistration.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/certificates.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/events.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/api/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/storage.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/flowcontrol.apiserver.k8s.io/v1beta2?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/authorization.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/discovery.k8s.io/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/policy/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/apiextensions.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/admissionregistration.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/config.concierge.pinniped.dev/v1alpha1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/identity.concierge.pinniped.dev/v1alpha1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/networking.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/policy/v1beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/autoscaling/v2beta1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/authentication.concierge.pinniped.dev/v1alpha1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/rbac.authorization.k8s.io/v1?timeout=32s 200 OK
 INFO  pinniped_proxy::service             > GET https://kubernetes.default/apis/login.concierge.pinniped.dev/v1alpha1?timeout=32s 200 OK
 INFO  pinniped_proxy::expired_value_cache > cache hit
 INFO  pinniped_proxy::service             > POST https://kubernetes.default/apis/authorization.k8s.io/v1/selfsubjectaccessreviews 201 Created

and for each paginated request, it takes longer.

To Reproduce
Steps to reproduce the behavior:

  1. install kubeapps with pinniped setup
  2. Follow logs for the pinniped-proxy container
  3. Access the catalog (when the bitnami repo is installed as it is by default)
  4. See error

Expected behavior
Each page should be returned promptly, and there should not be multiple requests to generate the rest mapper (perhaps we need to cache this per token, not sure yet).

Metadata

Metadata

Assignees

Labels

component/apis-serverIssue related to kubeapps api-servercomponent/pinniped-proxyIssue related to kubeapps integration with pinniped-proxykind/bugAn issue that reports a defect in an existing feature

Type

No type

Projects

Status

✅ Done

Relationships

None yet

Development

No branches or pull requests

Issue actions