Skip to content

Commit

Permalink
NewListEntitiesPager fix (#22469)
Browse files Browse the repository at this point in the history
* NewListEntitiesPager fix

Per the docs, if there are no continuation header values, there are no
more entities to return.

* simplify return
  • Loading branch information
jhendrixMSFT committed Feb 28, 2024
1 parent 4718139 commit 4769244
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 13 deletions.
1 change: 1 addition & 0 deletions sdk/data/aztables/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
### Breaking Changes

### Bugs Fixed
* Fixed an issue that could cause `Client.NewListEntitiesPager` to skip pages in some cases.

### Other Changes

Expand Down
15 changes: 5 additions & 10 deletions sdk/data/aztables/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,21 +164,16 @@ func (t *Client) NewListEntitiesPager(listOptions *ListEntitiesOptions) *runtime
}
return runtime.NewPager(runtime.PagingHandler[ListEntitiesResponse]{
More: func(page ListEntitiesResponse) bool {
if page.NextPartitionKey == nil || len(*page.NextPartitionKey) == 0 || page.NextRowKey == nil || len(*page.NextRowKey) == 0 {
return false
}
return true
// if there are no continuation header values, there are no more pages
// https://learn.microsoft.com/rest/api/storageservices/Query-Timeout-and-Pagination
return !((page.NextPartitionKey == nil || len(*page.NextPartitionKey) == 0) && (page.NextRowKey == nil || len(*page.NextRowKey) == 0))
},
Fetcher: func(ctx context.Context, page *ListEntitiesResponse) (ListEntitiesResponse, error) {
var partKey *string
var rowKey *string
if page != nil {
if page.NextPartitionKey != nil {
partKey = page.NextPartitionKey
}
if page.NextRowKey != nil {
rowKey = page.NextRowKey
}
partKey = page.NextPartitionKey
rowKey = page.NextRowKey
} else {
partKey = listOptions.NextPartitionKey
rowKey = listOptions.NextRowKey
Expand Down
4 changes: 1 addition & 3 deletions sdk/data/aztables/service_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,7 @@ func (t *ServiceClient) NewListTablesPager(listOptions *ListTablesOptions) *runt
Fetcher: func(ctx context.Context, page *ListTablesResponse) (ListTablesResponse, error) {
var tableName *string
if page != nil {
if page.NextTableName != nil {
tableName = page.NextTableName
}
tableName = page.NextTableName
} else {
tableName = listOptions.NextTableName
}
Expand Down

0 comments on commit 4769244

Please sign in to comment.