fix: continue recovered streams in a new segment
maintainer edit: streamed timeout recovery was returning the retried response internally while the channel still treated the final outbound as already streamed. End the current stream segment before retry/fallback recovery so subsequent deltas are delivered in a new segment.
This commit is contained in:
@@ -323,18 +323,24 @@ class TestFallbackOnStreamStalledAfterContent:
|
||||
)
|
||||
|
||||
streamed: list[str] = []
|
||||
recoveries: list[str] = []
|
||||
|
||||
async def _delta(text: str) -> None:
|
||||
streamed.append(text)
|
||||
|
||||
async def _recover() -> None:
|
||||
recoveries.append("recover")
|
||||
|
||||
result = await fb.chat_stream(
|
||||
messages=[{"role": "user", "content": "hi"}],
|
||||
on_content_delta=_delta,
|
||||
on_stream_recover=_recover,
|
||||
)
|
||||
assert result.finish_reason == "stop"
|
||||
assert result.content == "fallback ok"
|
||||
factory.assert_called_once_with(_fallback("fallback-a"))
|
||||
assert "stream stalled" in streamed
|
||||
assert streamed == ["stream stalled", "fallback ok"]
|
||||
assert recoveries == ["recover"]
|
||||
|
||||
|
||||
class TestFailoverOnTransientError:
|
||||
|
||||
Reference in New Issue
Block a user