From 738d9b788e59f21b4da9e280ccb8994c98ff308b Mon Sep 17 00:00:00 2001 From: Joel Hendrix Date: Tue, 1 Aug 2023 17:02:30 -0700 Subject: [PATCH] Don't swallow error on Close() Return the result of reader.Close() to the caller. --- sdk/ai/azopenai/CHANGELOG.md | 1 + sdk/ai/azopenai/event_reader.go | 10 ++++------ sdk/ai/azopenai/event_reader_test.go | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sdk/ai/azopenai/CHANGELOG.md b/sdk/ai/azopenai/CHANGELOG.md index 6e2a93282af8..d2aeb12f68d3 100644 --- a/sdk/ai/azopenai/CHANGELOG.md +++ b/sdk/ai/azopenai/CHANGELOG.md @@ -7,6 +7,7 @@ ### Breaking Changes - ChatCompletionsOptions, CompletionsOptions, EmbeddingsOptions `DeploymentID` field renamed to `Deployment`. +- Method `Close()` on `EventReader[T]` now returns an error. ### Bugs Fixed diff --git a/sdk/ai/azopenai/event_reader.go b/sdk/ai/azopenai/event_reader.go index 28aea580e849..eeb76f0aeef8 100644 --- a/sdk/ai/azopenai/event_reader.go +++ b/sdk/ai/azopenai/event_reader.go @@ -16,11 +16,11 @@ import ( // EventReader streams events dynamically from an OpenAI endpoint. type EventReader[T any] struct { - reader io.Reader // Required for Closing + reader io.ReadCloser // Required for Closing scanner *bufio.Scanner } -func newEventReader[T any](r io.Reader) *EventReader[T] { +func newEventReader[T any](r io.ReadCloser) *EventReader[T] { return &EventReader[T]{reader: r, scanner: bufio.NewScanner(r)} } @@ -56,8 +56,6 @@ func (er *EventReader[T]) Read() (T, error) { } // Close closes the EventReader and any applicable inner stream state. -func (er *EventReader[T]) Close() { - if closer, ok := er.reader.(io.Closer); ok { - closer.Close() - } +func (er *EventReader[T]) Close() error { + return er.reader.Close() } diff --git a/sdk/ai/azopenai/event_reader_test.go b/sdk/ai/azopenai/event_reader_test.go index 0644c6b43b91..d4eede841933 100644 --- a/sdk/ai/azopenai/event_reader_test.go +++ b/sdk/ai/azopenai/event_reader_test.go @@ -20,7 +20,7 @@ func TestEventReader_InvalidType(t *testing.T) { } text := strings.NewReader(strings.Join(data, "\n")) - eventReader := newEventReader[ChatCompletions](text) + eventReader := newEventReader[ChatCompletions](io.NopCloser(text)) firstEvent, err := eventReader.Read() require.Empty(t, firstEvent) @@ -34,7 +34,7 @@ func (br badReader) Read(p []byte) (n int, err error) { } func TestEventReader_BadReader(t *testing.T) { - eventReader := newEventReader[ChatCompletions](badReader{}) + eventReader := newEventReader[ChatCompletions](io.NopCloser(badReader{})) firstEvent, err := eventReader.Read() require.Empty(t, firstEvent)