Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

next token did not change is not always a bug #620

Closed
Mark-Simulacrum opened this issue Sep 19, 2022 · 4 comments
Closed

next token did not change is not always a bug #620

Mark-Simulacrum opened this issue Sep 19, 2022 · 4 comments
Assignees
Labels
bug This issue is a bug.

Comments

@Mark-Simulacrum
Copy link

Mark-Simulacrum commented Sep 19, 2022

Describe the bug

The generated code currently assumes that an unchanged next token returned from AWS is a bug and returns an error (generator code here).

However, at least the AWS CloudWatch logs GetLogEvents token has an expected behavior for not changing the token, in both the forward & backward direction:

The token for the next set of items in the backward direction. The token expires after 24 hours. This token is never null. If you have reached the end of the stream, it returns the same token you passed in.

The token for the next set of items in the forward direction. The token expires after 24 hours. If you have reached the end of the stream, it returns the same token you passed in.

When using this API with the paginator, we see this error on every call (at least with more than one page).

Expected Behavior

Pagination works correctly with no errors.

Current Behavior

Probably not particularly interesting, but we see the expected error due to the faulty implementation:

Error: failed to construct request: next token did not change, aborting paginator. This indicates an SDK or AWS service bug.

Reproduction Steps

let client = aws_sdk_cloudwatchlogs::Client::new(&config);
let mut events_pages = client
        .get_log_events()
        .log_group_name(group)
        .log_stream_name(stream)
        .start_from_head(true)
        .into_paginator()
        .send();
while let Some(page) = events_pages.next().await {
    let page = page?; // Error comes from here.
}

Possible Solution

No response

Additional Information/Context

No response

Version

├── aws-config v0.47.0
│   ├── aws-http v0.47.0
│   │   ├── aws-smithy-http v0.47.0
│   │   │   ├── aws-smithy-types v0.47.0
│   │   ├── aws-smithy-types v0.47.0 (*)
│   │   ├── aws-types v0.47.0
│   │   │   ├── aws-smithy-async v0.47.0
│   │   │   ├── aws-smithy-client v0.47.0
│   │   │   │   ├── aws-smithy-async v0.47.0 (*)
│   │   │   │   ├── aws-smithy-http v0.47.0 (*)
│   │   │   │   ├── aws-smithy-http-tower v0.47.0
│   │   │   │   │   ├── aws-smithy-http v0.47.0 (*)
│   │   │   │   ├── aws-smithy-types v0.47.0 (*)
│   │   │   ├── aws-smithy-http v0.47.0 (*)
│   │   │   ├── aws-smithy-types v0.47.0 (*)
│   ├── aws-sdk-sso v0.17.0
│   │   ├── aws-endpoint v0.47.0
│   │   │   ├── aws-smithy-http v0.47.0 (*)
│   │   │   ├── aws-types v0.47.0 (*)
│   │   ├── aws-http v0.47.0 (*)
│   │   ├── aws-sig-auth v0.47.0
│   │   │   ├── aws-sigv4 v0.47.0
│   │   │   │   ├── aws-smithy-http v0.47.0 (*)
│   │   │   ├── aws-smithy-http v0.47.0 (*)
│   │   │   ├── aws-types v0.47.0 (*)
│   │   ├── aws-smithy-async v0.47.0 (*)
│   │   ├── aws-smithy-client v0.47.0 (*)
│   │   ├── aws-smithy-http v0.47.0 (*)
│   │   ├── aws-smithy-http-tower v0.47.0 (*)
│   │   ├── aws-smithy-json v0.47.0
│   │   │   └── aws-smithy-types v0.47.0 (*)
│   │   ├── aws-smithy-types v0.47.0 (*)
│   │   ├── aws-types v0.47.0 (*)
│   ├── aws-sdk-sts v0.17.0
│   │   ├── aws-endpoint v0.47.0 (*)
│   │   ├── aws-http v0.47.0 (*)
│   │   ├── aws-sig-auth v0.47.0 (*)
│   │   ├── aws-smithy-async v0.47.0 (*)
│   │   ├── aws-smithy-client v0.47.0 (*)
│   │   ├── aws-smithy-http v0.47.0 (*)
│   │   ├── aws-smithy-http-tower v0.47.0 (*)
│   │   ├── aws-smithy-query v0.47.0
│   │   │   ├── aws-smithy-types v0.47.0 (*)
│   │   ├── aws-smithy-types v0.47.0 (*)
│   │   ├── aws-smithy-xml v0.47.0
│   │   ├── aws-types v0.47.0 (*)
│   ├── aws-smithy-async v0.47.0 (*)
│   ├── aws-smithy-client v0.47.0 (*)
│   ├── aws-smithy-http v0.47.0 (*)
│   ├── aws-smithy-http-tower v0.47.0 (*)
│   ├── aws-smithy-json v0.47.0 (*)
│   ├── aws-smithy-types v0.47.0 (*)
│   ├── aws-types v0.47.0 (*)
├── aws-sdk-cloudwatchlogs v0.17.0
│   ├── aws-endpoint v0.47.0 (*)
│   ├── aws-http v0.47.0 (*)
│   ├── aws-sig-auth v0.47.0 (*)
│   ├── aws-smithy-async v0.47.0 (*)
│   ├── aws-smithy-client v0.47.0 (*)
│   ├── aws-smithy-http v0.47.0 (*)
│   ├── aws-smithy-http-tower v0.47.0 (*)
│   ├── aws-smithy-json v0.47.0 (*)
│   ├── aws-smithy-types v0.47.0 (*)
│   ├── aws-types v0.47.0 (*)
├── aws-sdk-dynamodb v0.17.0
│   ├── aws-endpoint v0.47.0 (*)
│   ├── aws-http v0.47.0 (*)
│   ├── aws-sig-auth v0.47.0 (*)
│   ├── aws-smithy-async v0.47.0 (*)
│   ├── aws-smithy-client v0.47.0 (*)
│   ├── aws-smithy-http v0.47.0 (*)
│   ├── aws-smithy-http-tower v0.47.0 (*)
│   ├── aws-smithy-json v0.47.0 (*)
│   ├── aws-smithy-types v0.47.0 (*)
│   ├── aws-types v0.47.0 (*)
├── aws-types v0.47.0 (*)

Environment details (OS name and version, etc.)

AL2, but likely not relevant.

Logs

No response

@Mark-Simulacrum Mark-Simulacrum added bug This issue is a bug. needs-triage This issue or PR still needs to be triaged. labels Sep 19, 2022
@jdisanti
Copy link
Contributor

Thanks for reporting this! It definitely looks like a bug. The spec specifically calls out this use-case:

If a client receives an identical continuation token from a service in back to back calls, then the client MAY choose to stop sending requests. This scenario implies a "tail" style API operation where clients are running in an infinite loop to send requests to a service in order to retrieve results as they are available.

@jdisanti jdisanti removed the needs-triage This issue or PR still needs to be triaged. label Sep 19, 2022
@jdisanti jdisanti self-assigned this Sep 19, 2022
@jdisanti jdisanti moved this to In Progress in AWS Rust SDK Public Roadmap Sep 19, 2022
@jdisanti jdisanti moved this from In Progress to In Review in AWS Rust SDK Public Roadmap Sep 19, 2022
@jdisanti
Copy link
Contributor

The fix for this will go out in the next release.

@jdisanti jdisanti moved this from In Review to Pending Release in AWS Rust SDK Public Roadmap Sep 27, 2022
@jdisanti
Copy link
Contributor

The fix for this was released in release-2022-10-26.

Repository owner moved this from Pending Release to Done in AWS Rust SDK Public Roadmap Oct 27, 2022
@github-actions
Copy link

⚠️COMMENT VISIBILITY WARNING⚠️

Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue is a bug.
Projects
Archived in project
Development

No branches or pull requests

2 participants