Skip to content

envoy: removing srds from E-M#33192

Merged
alyssawilk merged 1 commit into
envoyproxy:mainfrom
alyssawilk:rds2
Apr 29, 2024
Merged

envoy: removing srds from E-M#33192
alyssawilk merged 1 commit into
envoyproxy:mainfrom
alyssawilk:rds2

Conversation

@alyssawilk
Copy link
Copy Markdown
Contributor

Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

@repokitteh-read-only
Copy link
Copy Markdown

As a reminder, PRs marked as draft will not be automatically assigned reviewers,
or be handled by maintainer-oncall triage.

Please mark your PR as ready when you want it to be reviewed!

🐱

Caused by: #33192 was opened by alyssawilk.

see: more, trace.

@alyssawilk alyssawilk force-pushed the rds2 branch 4 times, most recently from cdd1727 to d453464 Compare April 2, 2024 17:32
@alyssawilk alyssawilk force-pushed the rds2 branch 2 times, most recently from 3a2fcff to 31dd785 Compare April 4, 2024 21:00
@alyssawilk
Copy link
Copy Markdown
Contributor Author

/retest

@alyssawilk alyssawilk force-pushed the rds2 branch 3 times, most recently from a8a6d56 to a5386f4 Compare April 10, 2024 20:06
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
Copy link
Copy Markdown
Contributor

@adisuissa adisuissa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, thanks!
I don't think we have technical release notes, but if there's something like that, should notify SRDS users that they need to link the "//source/common/router:scoped_rds_lib" or otherwise it will fail during runtime.

Comment on lines +529 to +530
auto srds_factory =
Envoy::Config::Utility::getFactoryByName<Router::SrdsFactory>(srds_factory_name);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: move to the kScopedRoutes switch case.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mind if I leave here? it's a pretty cheap function for the non-srds case and if you declare variables in a switch you need braces and it screws up coverage.

* that must hold a reference/pointer to them.
*/
class ConfigProviderManager {
class ConfigProviderManager : public Singleton::Instance {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see why one would like to have a ConfigProviderManager as singleton, but it is unclear to me what triggered the change moving the Singleton inheritance from the implementation to the interface?
(I'm assuming this is something related to C++'s unique_ptr not aligned well with inheritance, but just want to make sure this change is needed).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah the implementation code which now only knows it has the interface but not the impl needs to know it is holding a singleton

Copy link
Copy Markdown
Contributor

@adisuissa adisuissa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@alyssawilk alyssawilk merged commit f9c1457 into envoyproxy:main Apr 29, 2024
alyssawilk added a commit to alyssawilk/envoy that referenced this pull request Apr 29, 2024
srds: removing hard link in binary

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
@alyssawilk alyssawilk deleted the rds2 branch June 25, 2024 14:50
RyanTheOptimist pushed a commit that referenced this pull request Feb 27, 2026
…43392)

### Description:
PR #33192 refactored SRDS to use a `SrdsFactory` interface for
decoupling, but inadvertently changed the `init_manager` passed to
`ScopedRoutesConfigProviderUtil::create()` from the listener-level
init_manager to the server-level init_manager. When a listener with SRDS
arrives via LDS after the server init_manager has already reached the
`Initialized` state, the SRDS init target is silently discarded in
release builds, and the SRDS subscription never starts.

The fix adds an `Init::Manager&` parameter to
`SrdsFactory::createConfigProvider()` and passes the listener's
init_manager from the HCM config constructor, restoring the correct
behavior that existed before PR #33192 and matching how RDS handles
init_manager propagation.

AI-assisted: Claude opus-4.6 was used to help write the unit test and PR
description. The fix itself and root cause analysis were done manually.

### Risk Level: Low
### Testing:
  - `//test/common/router:scoped_rds_test` PASSED
-
`//test/extensions/filters/network/http_connection_manager:config_test`
PASSED
  - `//test/integration:scoped_rds_integration_test` PASSED
  - Higress kind cluster integration test with Delta xDS + SRDS PASSED
### Docs Changes: N/A
### Release Notes: N/A
### Platform Specific Features: N/A

---------

Signed-off-by: jingze <daijingze.djz@alibaba-inc.com>
Signed-off-by: Jingze <52855280+Jing-ze@users.noreply.github.com>
bmjask pushed a commit to bmjask/envoy that referenced this pull request Mar 14, 2026
…nvoyproxy#43392)

### Description:
PR envoyproxy#33192 refactored SRDS to use a `SrdsFactory` interface for
decoupling, but inadvertently changed the `init_manager` passed to
`ScopedRoutesConfigProviderUtil::create()` from the listener-level
init_manager to the server-level init_manager. When a listener with SRDS
arrives via LDS after the server init_manager has already reached the
`Initialized` state, the SRDS init target is silently discarded in
release builds, and the SRDS subscription never starts.

The fix adds an `Init::Manager&` parameter to
`SrdsFactory::createConfigProvider()` and passes the listener's
init_manager from the HCM config constructor, restoring the correct
behavior that existed before PR envoyproxy#33192 and matching how RDS handles
init_manager propagation.

AI-assisted: Claude opus-4.6 was used to help write the unit test and PR
description. The fix itself and root cause analysis were done manually.

### Risk Level: Low
### Testing:
  - `//test/common/router:scoped_rds_test` PASSED
-
`//test/extensions/filters/network/http_connection_manager:config_test`
PASSED
  - `//test/integration:scoped_rds_integration_test` PASSED
  - Higress kind cluster integration test with Delta xDS + SRDS PASSED
### Docs Changes: N/A
### Release Notes: N/A
### Platform Specific Features: N/A

---------

Signed-off-by: jingze <daijingze.djz@alibaba-inc.com>
Signed-off-by: Jingze <52855280+Jing-ze@users.noreply.github.com>
Signed-off-by: bjmask <11672696+bjmask@users.noreply.github.com>
bvandewalle pushed a commit to bvandewalle/envoy that referenced this pull request Mar 17, 2026
…nvoyproxy#43392)

### Description:
PR envoyproxy#33192 refactored SRDS to use a `SrdsFactory` interface for
decoupling, but inadvertently changed the `init_manager` passed to
`ScopedRoutesConfigProviderUtil::create()` from the listener-level
init_manager to the server-level init_manager. When a listener with SRDS
arrives via LDS after the server init_manager has already reached the
`Initialized` state, the SRDS init target is silently discarded in
release builds, and the SRDS subscription never starts.

The fix adds an `Init::Manager&` parameter to
`SrdsFactory::createConfigProvider()` and passes the listener's
init_manager from the HCM config constructor, restoring the correct
behavior that existed before PR envoyproxy#33192 and matching how RDS handles
init_manager propagation.

AI-assisted: Claude opus-4.6 was used to help write the unit test and PR
description. The fix itself and root cause analysis were done manually.

### Risk Level: Low
### Testing:
  - `//test/common/router:scoped_rds_test` PASSED
-
`//test/extensions/filters/network/http_connection_manager:config_test`
PASSED
  - `//test/integration:scoped_rds_integration_test` PASSED
  - Higress kind cluster integration test with Delta xDS + SRDS PASSED
### Docs Changes: N/A
### Release Notes: N/A
### Platform Specific Features: N/A

---------

Signed-off-by: jingze <daijingze.djz@alibaba-inc.com>
Signed-off-by: Jingze <52855280+Jing-ze@users.noreply.github.com>
fishcakez pushed a commit to fishcakez/envoy that referenced this pull request Mar 25, 2026
…nvoyproxy#43392)

### Description:
PR envoyproxy#33192 refactored SRDS to use a `SrdsFactory` interface for
decoupling, but inadvertently changed the `init_manager` passed to
`ScopedRoutesConfigProviderUtil::create()` from the listener-level
init_manager to the server-level init_manager. When a listener with SRDS
arrives via LDS after the server init_manager has already reached the
`Initialized` state, the SRDS init target is silently discarded in
release builds, and the SRDS subscription never starts.

The fix adds an `Init::Manager&` parameter to
`SrdsFactory::createConfigProvider()` and passes the listener's
init_manager from the HCM config constructor, restoring the correct
behavior that existed before PR envoyproxy#33192 and matching how RDS handles
init_manager propagation.

AI-assisted: Claude opus-4.6 was used to help write the unit test and PR
description. The fix itself and root cause analysis were done manually.

### Risk Level: Low
### Testing:
  - `//test/common/router:scoped_rds_test` PASSED
-
`//test/extensions/filters/network/http_connection_manager:config_test`
PASSED
  - `//test/integration:scoped_rds_integration_test` PASSED
  - Higress kind cluster integration test with Delta xDS + SRDS PASSED
### Docs Changes: N/A
### Release Notes: N/A
### Platform Specific Features: N/A

---------

Signed-off-by: jingze <daijingze.djz@alibaba-inc.com>
Signed-off-by: Jingze <52855280+Jing-ze@users.noreply.github.com>
krinkinmu pushed a commit to grnmeira/envoy that referenced this pull request Apr 20, 2026
…nvoyproxy#43392)

### Description:
PR envoyproxy#33192 refactored SRDS to use a `SrdsFactory` interface for
decoupling, but inadvertently changed the `init_manager` passed to
`ScopedRoutesConfigProviderUtil::create()` from the listener-level
init_manager to the server-level init_manager. When a listener with SRDS
arrives via LDS after the server init_manager has already reached the
`Initialized` state, the SRDS init target is silently discarded in
release builds, and the SRDS subscription never starts.

The fix adds an `Init::Manager&` parameter to
`SrdsFactory::createConfigProvider()` and passes the listener's
init_manager from the HCM config constructor, restoring the correct
behavior that existed before PR envoyproxy#33192 and matching how RDS handles
init_manager propagation.

AI-assisted: Claude opus-4.6 was used to help write the unit test and PR
description. The fix itself and root cause analysis were done manually.

### Risk Level: Low
### Testing:
  - `//test/common/router:scoped_rds_test` PASSED
-
`//test/extensions/filters/network/http_connection_manager:config_test`
PASSED
  - `//test/integration:scoped_rds_integration_test` PASSED
  - Higress kind cluster integration test with Delta xDS + SRDS PASSED
### Docs Changes: N/A
### Release Notes: N/A
### Platform Specific Features: N/A

---------

Signed-off-by: jingze <daijingze.djz@alibaba-inc.com>
Signed-off-by: Jingze <52855280+Jing-ze@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants