solo-io / gloo-portal-issues

Public tracker for issues related to Gloo Portal
https://docs.solo.io/gloo-portal/latest/
1 stars 3 forks source link

Portal Controller logs show infinite loop trying to update Group / Portal / Environment status #77

Closed jameshbarton closed 3 years ago

jameshbarton commented 3 years ago

Describe the bug At some point in applying the user transformations described in #74, the portal controller drops into an infinite loop where it is continually encounters errors like the one below and reports updating the Group / Portal / Environment status.

Here are sample error messages:

{"level":"error","ts":1625838141.108211,"logger":"controller-runtime.manager.controller.portal-reconciler","msg":"Reconciler error","name":"httpbin-portal","namespace":"default","error":"1 error occurred:\n\t* Operation cannot be fulfilled on groups.portal.gloo.solo.io \"developers\": the object has been modified; please apply your changes to the latest version and try again\n\n","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.7.0/pkg/internal/controller/controller.go:235\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.1\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.7.0/pkg/internal/controller/controller.go:198\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.UntilWithContext\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:99"}

{"level":"error","ts":1625838145.423372,"logger":"event-controller.api-product-reconciler","msg":"handler error. retrying","kind":"portal.gloo.solo.io/v1beta1, Kind=APIProduct","event":"default/httpbin-product","error":"1 error occurred:\n\t* Operation cannot be fulfilled on environments.portal.gloo.solo.io \"httpbin-dev\": the object has been modified; please apply your changes to the latest version and try again\n\n","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.7.0/pkg/internal/controller/controller.go:263\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.7.0/pkg/internal/controller/controller.go:235\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.1\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.7.0/pkg/internal/controller/controller.go:198\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.UntilWithContext\n\t/home/runner/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:99"}

And here are samples of the messages where Group / Portal / Environment status are being updated repeatedly:

{"level":"info","ts":1625838146.025,"logger":"gloo_portal","msg":"updated environment status","environment":"httpbin-dev.default","status":"observed_generation:9  state:Succeeded  modified_date:{seconds:1625838145  nanos:745705743}  publishedPortals:{name:\"httpbin-portal\"  namespace:\"default\"  domains:\"httpbin.example.com\"  api_products:{name:\"httpbin-product\"  namespace:\"default\"}}  api_products:{name:\"httpbin-product\"  namespace:\"default\"  versions:{key:\"v1\"  value:{routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./anything\"  method:\"GET\"  path:\"/anything\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./brotli\"  method:\"GET\"  path:\"/brotli\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./deflate\"  method:\"GET\"  path:\"/deflate\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./delete\"  method:\"DELETE\"  path:\"/delete\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./get\"  method:\"GET\"  path:\"/get\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./gzip\"  method:\"GET\"  path:\"/gzip\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./headers\"  method:\"GET\"  path:\"/headers\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./ip\"  method:\"GET\"  path:\"/ip\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./patch\"  method:\"PATCH\"  path:\"/patch\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./post\"  method:\"POST\"  path:\"/post\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./put\"  method:\"PUT\"  path:\"/put\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./redirect-to\"  method:\"GET\"  path:\"/redirect-to\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./response-headers\"  method:\"GET\"  path:\"/response-headers\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./user-agent\"  method:\"GET\"  path:\"/user-agent\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./uuid\"  method:\"GET\"  path:\"/uuid\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./xml\"  method:\"GET\"  path:\"/xml\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./base64\"  method:\"GET\"  path:\"/base64/{value}\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./bytes\"  method:\"GET\"  path:\"/bytes/{number}\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./cache\"  method:\"GET\"  path:\"/cache/{maxAge}\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./delay\"  method:\"GET\"  path:\"/delay/{seconds}\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./status\"  method:\"GET\"  path:\"/status/{code}\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  routes:{operation_id:\"httpbin-product.default.httpbin-schema.default./stream\"  method:\"GET\"  path:\"/stream/{number}\"  route:{backends:{kube:{name:\"httpbin\"  namespace:\"default\"  port:8000}}}}  api_type:OPEN_API}}  usage_plans:\"basic\"}"}

{"level":"info","ts":1625838146.0711026,"logger":"gloo_portal","msg":"updated Group status","group":"developers.gloo-portal","status":{"observed_generation":2,"state":4,"users":[{"name":"dev1","namespace":"gloo-portal"}],"has_access_to":{"api_products":[{"name":"httpbin-product","namespace":"default","environments":[{"name":"httpbin-dev","namespace":"default","usage_plans":["basic"]}]}]}}}

{"level":"info","ts":1625838146.0946417,"logger":"gloo_portal","msg":"updated Portal status","portal":"httpbin-portal.default","status":{"observed_generation":1,"state":4,"published_environments":[{"name":"httpbin-dev","namespace":"default","api_products":[{"name":"httpbin-product","namespace":"default"}]}]}}
{"level":"info","ts":1625838146.126685,"logger":"gloo_portal","msg":"updated Group status","group":"developers.gloo-portal",

To Reproduce See steps in #74

Expected behavior No infinite controller loops in logs.

Additional context

arianaw66 commented 3 years ago

To reproduce this, I added an API Doc using the petstore OAS. I added a route pointing to the petstore service, an API Product with 1 version using that route and that API Doc, and an environment referencing that API Product, as seen below (no Portal or Group necessary):

apiVersion: portal.gloo.solo.io/v1beta1
kind: Route
metadata:
  name: petstore-route
  namespace: gloo-portal
spec:
  backends:
  - kube:
      name: petstore
      namespace: default
      port: 8080
    weight: 1
apiVersion: portal.gloo.solo.io/v1beta1
kind: APIProduct
metadata:
  name: test-prod
  namespace: gloo-portal
spec:
  displayInfo:
    title: Test Prod
  versions:
  - apis:
    - apiDoc:
        name: test-doc
        namespace: gloo-portal
      openApi: {}
    gatewayConfig:
      route:
        routeRef:
          name: petstore-route
          namespace: gloo-portal
    name: v1
apiVersion: portal.gloo.solo.io/v1beta1
kind: Environment
metadata:
  name: test-env
  namespace: gloo-portal
spec:
  apiProducts:
  - names:
    - test-prod
    namespaces:
    - gloo-portal
    versions: {}
  displayInfo:
    displayName: Test Env
  domains:
  - foo.com
  gatewayConfig: {}

Everything looked good, and the logs were quiet. I then modified the route to include the following stagedTransformation option:

  options:
    stagedTransformations:
      early:
        requestTransforms:
        - matcher:
            prefix: /
          requestTransformation:
            transformationTemplate:
              headers:
                foo: {}

And saw the following logs with the Environment updating ad infinitum:

{"level":"info","ts":1625843118.2850912,"logger":"gloo_portal","msg":"updated route status","route":"petstore-route.gloo-portal","status":{"observed_generation":10,"state":4}}
{"level":"info","ts":1625843118.400531,"logger":"gloo_portal","msg":"updated API Product schema","product":"test-prod.gloo-portal"}
{"level":"info","ts":1625843118.400556,"logger":"gloo_portal","msg":"updated API Product status","product":"test-prod.gloo-portal","status":{"observed_generation":2,"state":4,"modified_date":{"seconds":1625842803,"nanos":691887000},"version_info":{"v1":{"api_routes":[{"operation_id":"test-prod.gloo-portal.test-doc.gloo-portal.findPets","method":"GET","path":"/api/pets","RouteConfig":{"Route":{"backends":[{"kube":{"name":"petstore","namespace":"default","port":8080},"weight":1}],"options":{"stagedTransformations":{"early":{"requestTransforms":[{"matcher":{"prefix":"/"},"requestTransformation":{"transformationTemplate":{"headers":{"foo":{}}}}}]}}}}}},{"operation_id":"test-prod.gloo-portal.test-doc.gloo-portal.addPet","method":"POST","path":"/api/pets","RouteConfig":{"Route":{"backends":[{"kube":{"name":"petstore","namespace":"default","port":8080},"weight":1}],"options":{"stagedTransformations":{"early":{"requestTransforms":[{"matcher":{"prefix":"/"},"requestTransformation":{"transformationTemplate":{"headers":{"foo":{}}}}}]}}}}}},{"operation_id":"test-prod.gloo-portal.test-doc.gloo-portal.deletePet","method":"DELETE","path":"/api/pets/{id}","RouteConfig":{"Route":{"backends":[{"kube":{"name":"petstore","namespace":"default","port":8080},"weight":1}],"options":{"stagedTransformations":{"early":{"requestTransforms":[{"matcher":{"prefix":"/"},"requestTransformation":{"transformationTemplate":{"headers":{"foo":{}}}}}]}}}}}},{"operation_id":"test-prod.gloo-portal.test-doc.gloo-portal.findPetById","method":"GET","path":"/api/pets/{id}","RouteConfig":{"Route":{"backends":[{"kube":{"name":"petstore","namespace":"default","port":8080},"weight":1}],"options":{"stagedTransformations":{"early":{"requestTransforms":[{"matcher":{"prefix":"/"},"requestTransformation":{"transformationTemplate":{"headers":{"foo":{}}}}}]}}}}}}],"number_of_endpoints":4,"api_type":1}}}}
{"level":"info","ts":1625843118.4383612,"logger":"gloo_portal","msg":"updated environment status","environment":"test-env.gloo-portal","status":"observed_generation:4 state:Succeeded modified_date:{seconds:1625842804 nanos:9258000} api_products:{name:\"test-prod\" namespace:\"gloo-portal\" versions:{key:\"v1\" value:{routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPets\" method:\"GET\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.addPet\" method:\"POST\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.deletePet\" method:\"DELETE\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPetById\" method:\"GET\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} api_type:OPEN_API}}}"}
{"level":"info","ts":1625843118.447912,"logger":"gloo_portal","msg":"updated environment status","environment":"test-env.gloo-portal","status":"observed_generation:4 state:Succeeded modified_date:{seconds:1625843118 nanos:438743000} api_products:{name:\"test-prod\" namespace:\"gloo-portal\" versions:{key:\"v1\" value:{routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPets\" method:\"GET\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.addPet\" method:\"POST\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.deletePet\" method:\"DELETE\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPetById\" method:\"GET\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} api_type:OPEN_API}}}"}
{"level":"info","ts":1625843118.457552,"logger":"gloo_portal","msg":"updated environment status","environment":"test-env.gloo-portal","status":"observed_generation:4 state:Succeeded modified_date:{seconds:1625843118 nanos:448216000} api_products:{name:\"test-prod\" namespace:\"gloo-portal\" versions:{key:\"v1\" value:{routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPets\" method:\"GET\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.addPet\" method:\"POST\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.deletePet\" method:\"DELETE\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPetById\" method:\"GET\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} api_type:OPEN_API}}}"}
{"level":"info","ts":1625843118.467544,"logger":"gloo_portal","msg":"updated environment status","environment":"test-env.gloo-portal","status":"observed_generation:4 state:Succeeded modified_date:{seconds:1625843118 nanos:457856000} api_products:{name:\"test-prod\" namespace:\"gloo-portal\" versions:{key:\"v1\" value:{routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPets\" method:\"GET\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.addPet\" method:\"POST\" path:\"/api/pets\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.deletePet\" method:\"DELETE\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} routes:{operation_id:\"test-prod.gloo-portal.test-doc.gloo-portal.findPetById\" method:\"GET\" path:\"/api/pets/{id}\" route:{backends:{kube:{name:\"petstore\" namespace:\"default\" port:8080} weight:1} options:{staged_transformations:{early:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{headers:{key:\"foo\" value:{}}}}}} regular:{request_transforms:{matcher:{prefix:\"/\"} request_transformation:{transformation_template:{passthrough:{} dynamic_metadata_values:{key:\"environment\" value:{text:\"test-env.gloo-portal\"}} dynamic_metadata_values:{key:\"api_product\" value:{text:\"test-prod.gloo-portal\"}}}}}}}}}} api_type:OPEN_API}}}"}
arianaw66 commented 3 years ago

Notably, if I comment out the line of code adding the metadata transform here, the logs are quiet again.