#7176 feat: implement AppService control plane proxy with TTL cache
Pull request opened by
AdilFayyaz
Depends on:
#7175
Why are the changes needed?
The control plane needs a stable API surface for app management without making direct K8s calls. AppService proxies to InternalAppService (data plane) and adds a TTL cache to reduce cross-plane RPC calls on hot Get paths.
What changes were proposed in this pull request?
• Added app/service/AppService — cache-aside proxy over InternalAppService; Get reads from cache, mutations invalidate, Watch is a streaming passthrough
• Added app/setup.go — mounts AppService on the control plane mux; in unified mode routes to /internal on the same mux with no network hop
• Restructured config: app/internal/config/InternalAppConfig (data plane) and app/config/AppConfig (control plane, holds CacheTTL + InternalAppServiceURL)
• Removed AppService stub and wiring from runs/ — no longer needed there
How was this patch tested?
• go test ./app/service/... — 8 unit tests covering cache hit, miss, TTL expiry, invalidation on Create/Update/Delete, List always forwarding, and Watch stream proxying
• go test ./app/internal/service/... — covers InternalAppService RPCs including DesiredState branching, pagination, and Watch initial snapshot
• go test ./app/... — all packages pass
Setup process
Screenshots
Check all the applicable boxes
• I updated the documentation accordingly.
• All new and existing tests passed.
• All commits are signed-off.
Related PRs
Docs link
•
main
•
#6583
•
feat: implement AppService control plane proxy with TTL cache 👈
•
#7188
•
#7197
flyteorg/flyte