diff --git a/internal/xds/translator/translator.go b/internal/xds/translator/translator.go index f1f3ce1374..a194144c38 100644 --- a/internal/xds/translator/translator.go +++ b/internal/xds/translator/translator.go @@ -120,10 +120,6 @@ func (t *Translator) Translate(xdsIR *ir.Xds) (*types.ResourceVersionTable, erro errs = errors.Join(errs, err) } - if err := processJSONPatches(tCtx, xdsIR.EnvoyPatchPolicies); err != nil { - errs = errors.Join(errs, err) - } - if err := processClusterForAccessLog(tCtx, xdsIR.AccessLog, xdsIR.Metrics); err != nil { errs = errors.Join(errs, err) } @@ -140,6 +136,11 @@ func (t *Translator) Translate(xdsIR *ir.Xds) (*types.ResourceVersionTable, erro errs = errors.Join(errs, err) } + // All XDS resources is ready, let's do the patch. + if err := processJSONPatches(tCtx, xdsIR.EnvoyPatchPolicies); err != nil { + errs = errors.Join(errs, err) + } + // Check if an extension want to inject any clusters/secrets // If no extension exists (or it doesn't subscribe to this hook) then this is a quick no-op if err := processExtensionPostTranslationHook(tCtx, t.ExtensionManager, xdsIR.ExtensionServerPolicies); err != nil {