Send EDS response in ADS mode when Envoy reconnect and asks with Empty version#127
Send EDS response in ADS mode when Envoy reconnect and asks with Empty version#127lukidzi wants to merge 1 commit intoenvoyproxy:mainfrom
Conversation
Codecov Report
@@ Coverage Diff @@
## master #127 +/- ##
============================================
+ Coverage 89.5% 89.78% +0.28%
- Complexity 193 198 +5
============================================
Files 22 22
Lines 600 617 +17
Branches 48 53 +5
============================================
+ Hits 537 554 +17
Misses 48 48
Partials 15 15
Continue to review full report at Codecov.
|
…y version Signed-off-by: Lukasz Dziedziak <lukasz.dziedziak@allegro.pl>
6b1a5f1 to
1a649b9
Compare
|
@lukidzi is this still relevant? |
|
This does seem like a race that could get Envoy stuck, so it probably is worth merging in one form or another. I think probably the logic could be:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #127 +/- ##
============================================
+ Coverage 89.50% 89.78% +0.28%
- Complexity 193 198 +5
============================================
Files 22 22
Lines 600 617 +17
Branches 48 53 +5
============================================
+ Hits 537 554 +17
Misses 48 48
Partials 15 15 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
We found that Envoy has a cluster in warming state after reconnect to new control-plane.
So let's assume Envoy is connected to
Control-plane1.Control-plane1receive information about the new cluster[Cluster1]and send CDS response to Envoy using ADS.Control-plane1die and at the same time cluster[Cluster1]has been removed. Envoy connects to Control-plane2 and send[EDS,LDS,RDS] requests. Because Envoy didn't received response EDS fromControl-plane1this cluster is in warming state. EDS request from Envoy toControl-plane2contains resource name of removed cluster[Cluster1]andControl-plane2doesn't know about the cluster which was sent byControl-plane1to Envoy. Because ADS implementation requires to send only response when all requested resources in snapshotControl-plane2won’t respond. In this situation Envoy stay in warming phase for ever.