Commit 0edfb9d
committed
fix: Attach FDv1 fallback applier unconditionally so the directive halts the data system without a fallback
The previous attempt to guard FDv2DataSystem.Create against a null
FDv1FallbackSynchronizer (commit dec9450) regressed Requirement 1.6.3(4):
when no FDv1 fallback is configured and the directive arrives, the SDK
must halt -- it must not keep retrying the failing synchronizer.
Skipping the FDv1 fallback factory list also stripped the
fdv1FallbackApplier from the synchronizer entry's outer-level observer,
so the directive was no longer observed: nothing disposed the streaming
source, and the EventSource library kept reconnecting after every 500.
Attach the fdv1FallbackApplier (and the initializer variant) to the
outer composite unconditionally. When an FDv1 fallback entry is in the
outer list the applier advances to it; when one is not, the applier's
BlockCurrent + DisposeCurrent + GoToNext sequence exhausts the outer
list -- which disposes the current synchronizer (stopping reconnects)
and transitions the outer composite to Off via InternalDispose.
Add an end-to-end test (SynchronizerFDv1FallbackWithoutFallbackConfiguredHaltsDataSystem)
that mirrors the harness "directive without FDv1 fallback configured halts
the data system" scenario: a synchronizer reports Interrupted+FDv1Fallback
(500 + directive), no FDv1 fallback configured, the underlying source must
be disposed, and the data system must reach Off.1 parent 4b3559e commit 0edfb9d
2 files changed
Lines changed: 101 additions & 19 deletions
File tree
- pkgs/sdk/server
- src/Internal/FDv2DataSources
- test/Internal/FDv2DataSources
Lines changed: 15 additions & 19 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
103 | 97 | | |
104 | | - | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
105 | 101 | | |
106 | 102 | | |
107 | 103 | | |
| |||
125 | 121 | | |
126 | 122 | | |
127 | 123 | | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
135 | 131 | | |
136 | 132 | | |
137 | 133 | | |
| |||
Lines changed: 86 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1777 | 1777 | | |
1778 | 1778 | | |
1779 | 1779 | | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
1780 | 1866 | | |
1781 | 1867 | | |
1782 | 1868 | | |
| |||
0 commit comments