Skip to content

Commit

Permalink
Fix streaming APIs' Err method closing stream
Browse files Browse the repository at this point in the history
Fixes calling the Err method on SDK's Amazon Kinesis's SubscribeToShared
and Amazon S3's SelectObjectContent response EventStream members closing
the stream. This would cause unexpected read errors, or early
termination of the streams. Only the Close method of the streaming
members will close the streams.

Improved generated unit and integration tests for streaming API
operations.

Related to aws#2769
  • Loading branch information
jasdel committed Oct 10, 2019
1 parent dedeb6b commit 24311b0
Show file tree
Hide file tree
Showing 13 changed files with 206 additions and 37 deletions.
8 changes: 4 additions & 4 deletions private/model/api/codegentest/service/restjsonservice/api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions private/model/api/codegentest/service/restxmlservice/api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions private/model/api/codegentest/service/rpcservice/api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 12 additions & 2 deletions private/model/api/eventstream.go
Expand Up @@ -335,6 +335,8 @@ func (es *{{ $.ShapeName }}) Close() (err error) {
es.Writer.Close()
{{ end -}}
es.StreamCloser.Close()
return es.Err()
}
Expand All @@ -353,8 +355,6 @@ func (es *{{ $.ShapeName }}) Err() error {
}
{{ end -}}
es.StreamCloser.Close()
return nil
}
Expand Down Expand Up @@ -974,6 +974,16 @@ func (c *loopReader) Read(p []byte) (int, error) {
t.Fatalf("expect no error got, %v", err)
}
// Assert calling Err before close does not close the stream.
resp.{{ $esMemberName }}.Err()
select {
case _, ok := <-resp.{{ $esMemberName }}.Events():
if !ok {
t.Fatalf("expect stream not to be closed, but was")
}
default:
}
resp.{{ $esMemberName }}.Close()
<-resp.{{ $esMemberName }}.Events()
Expand Down
4 changes: 2 additions & 2 deletions service/kinesis/api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions service/kinesis/eventstream_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions service/s3/api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 24311b0

Please sign in to comment.