Skip to content

Serve xDS resources that embed Armeria custom filter configs - #1354

Draft
minwoox wants to merge 1 commit into
line:mainfrom
minwoox:athenz_proto
Draft

Serve xDS resources that embed Armeria custom filter configs#1354
minwoox wants to merge 1 commit into
line:mainfrom
minwoox:athenz_proto

Conversation

@minwoox

@minwoox minwoox commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Motivation:

The xDS control plane parses every stored Listener/Cluster/Route/Endpoint into a proto with a curioswitch MessageMarshaller, which must resolve every google.protobuf.Any it contains (such as an HttpFilter typed_config). The marshaller only registered types under io.envoyproxy.envoy (from java-control-plane) plus a couple of Central Dogma-specific ones. Armeria's xDS filters (e.g. the Athenz access-token filters) are carried as typed_config Any values whose types live in com.linecorp.armeria.xds.athenz and jp.co.lycorp.ftd.athenz.v1, packaged in armeria-xds-api, which Central Dogma did not depend on.

Modifications:

  • Make armeria-xds-api the single provider of io.envoyproxy.envoy types in the :xds module.

Result:

  • xDS resources that embed Armeria custom filter configs, such as the Athenz access-token filters, can now be created, stored and served by the control plane.

…henz)

Motivation:

The xDS control plane parses every stored Listener/Cluster/Route/Endpoint into
a proto with a curioswitch MessageMarshaller, which must resolve every
google.protobuf.Any it contains (such as an HttpFilter typed_config). The
marshaller only registered types under io.envoyproxy.envoy (from
java-control-plane) plus a couple of Central Dogma-specific ones. Armeria's xDS
filters (e.g. the Athenz access-token filters) are carried as typed_config Any
values whose types live in com.linecorp.armeria.xds.athenz and
jp.co.lycorp.ftd.athenz.v1, packaged in armeria-xds-api, which Central Dogma did
not depend on.

Modifications:
- Make armeria-xds-api the single provider of io.envoyproxy.envoy types in the
  :xds module.

Result:
- xDS resources that embed Armeria custom filter configs, such as the Athenz
  access-token filters, can now be created, stored and served by the control
  plane.
@minwoox minwoox added this to the 0.86.0 milestone Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 55337c6b-8f95-4cc1-b485-586951425f29

📥 Commits

Reviewing files that changed from the base of the PR and between 3847874 and b7c13e5.

📒 Files selected for processing (6)
  • dependencies.toml
  • xds/build.gradle
  • xds/src/main/java/com/linecorp/centraldogma/xds/internal/XdsResourceManager.java
  • xds/src/test/java/com/linecorp/centraldogma/xds/internal/XdsAthenzResourceParseTest.java
  • xds/src/test/java/com/linecorp/centraldogma/xds/internal/XdsTestUtil.java
  • xds/src/test/java/com/linecorp/centraldogma/xds/listener/v1/XdsListenerServiceTest.java

📝 Walkthrough

Walkthrough

The Armeria dependency advances to 1.41.0. The xDS module adds Armeria protobuf types, generalizes protobuf scanning, and adds Athenz typed-configuration parsing and LDS integration tests.

Changes

xDS Athenz support

Layer / File(s) Summary
Dependency wiring and protobuf marshalling
dependencies.toml, xds/build.gradle, xds/src/main/java/.../XdsResourceManager.java
The xDS module adds armeria-xds-api, adjusts transitive dependency exclusions, and scans configured custom protobuf packages for supported message types.
Typed configuration parsing
xds/src/test/java/.../XdsTestUtil.java, xds/src/test/java/.../XdsAthenzResourceParseTest.java
Test fixtures place statPrefix in HttpConnectionManager. Tests verify Athenz typed-configuration YAML round-tripping and field unpacking.
LDS listener integration
xds/src/test/java/.../XdsListenerServiceTest.java
Integration coverage creates an Athenz-configured listener through HTTP and verifies resource naming, serialization, and LDS discovery.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • line/centraldogma#1315: Updates the Armeria version and also changes xDS dependency wiring and resource marshalling.

Suggested labels: dependencies

Suggested reviewers: ikhoon, jrhee17

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: serving xDS resources that contain Armeria custom filter configurations.
Description check ✅ Passed The description explains the marshaller issue, dependency changes, and resulting support for Armeria custom filter configurations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant