Commit b301213
committed
fix: preserve FDv1 fallback signal across streaming error paths
When a streaming Start action latched the FDv1 Fallback Directive
(via X-LD-FD-Fallback: true), a subsequent Fault, JSONDecodeError, or
generic exception path could yield an Update with
fallback_to_fdv1=False because each error path independently checked
the failure's headers for the directive instead of consulting the
latched state from the earlier Start. The most visible symptom is an
HTTPStatusError 401 mid-stream after the directive was set: the SDK
treated it as an ordinary unrecoverable failure (REMOVE) instead of
honoring the directive (FDV1).
Funnel every error-path Update through a small _with_fallback_signal
helper that propagates the latched signal, and break out of the SSE
read loop unconditionally once the directive is set so we don't keep
retrying the FDv2 endpoint -- the directive is one-way and terminal.1 parent f37695b commit b301213
2 files changed
Lines changed: 99 additions & 16 deletions
File tree
- ldclient
- impl/datasourcev2
- testing/impl/datasourcev2
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
216 | | - | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
217 | 220 | | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
218 | 235 | | |
219 | 236 | | |
220 | 237 | | |
| |||
228 | 245 | | |
229 | 246 | | |
230 | 247 | | |
231 | | - | |
| 248 | + | |
232 | 249 | | |
233 | | - | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
234 | 254 | | |
235 | 255 | | |
236 | 256 | | |
| |||
248 | 268 | | |
249 | 269 | | |
250 | 270 | | |
251 | | - | |
| 271 | + | |
| 272 | + | |
252 | 273 | | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
| 274 | + | |
261 | 275 | | |
262 | 276 | | |
263 | 277 | | |
| |||
268 | 282 | | |
269 | 283 | | |
270 | 284 | | |
271 | | - | |
272 | | - | |
| 285 | + | |
| 286 | + | |
273 | 287 | | |
274 | 288 | | |
275 | 289 | | |
276 | 290 | | |
277 | 291 | | |
278 | 292 | | |
279 | 293 | | |
280 | | - | |
| 294 | + | |
281 | 295 | | |
282 | 296 | | |
283 | 297 | | |
284 | 298 | | |
285 | 299 | | |
286 | 300 | | |
287 | | - | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
288 | 304 | | |
289 | 305 | | |
290 | 306 | | |
| |||
Lines changed: 67 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
626 | 626 | | |
627 | 627 | | |
628 | 628 | | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
629 | 696 | | |
630 | 697 | | |
631 | 698 | | |
| |||
0 commit comments