smithy-rs/rust-runtime/aws-smithy-types
Zelda Hessler 1cecc3baa6
Fix request compression (#3820)
## Description
<!--- Describe your changes in detail -->
This PR includes several fixes for request compression:
- `aws_smithy_compression::body::compress::CompressedBody` will no
longer incorrectly return the inner body's `SizeHint`, returning
`SizeHint::default()` instead.
- Fixed a bug where compressed payloads would have an incorrect content
length, causing those requests to hang.
- Compress in-memory request payloads instead of the previous lazy
approach.

## Testing
<!--- Please describe in detail how you tested your changes -->
<!--- Include details of your testing environment, and the tests you ran
to -->
<!--- see how your change affects other areas of the code, etc. -->
Tests are included. Additionally, I ran a reproducer for a user issues
to ensure that their use case works:

```
#[tokio::test]
async fn use_case_reproducer() {
    tracing_subscriber::fmt::init();
    let shared_config = aws_config::from_env()
        .region(aws_sdk_cloudwatch::config::Region::new("us-west-2"))
        .load()
        .await;
    let service_config = aws_sdk_cloudwatch::config::Config::from(&shared_config)
        .to_builder()
        .request_min_compression_size_bytes(1)
        .build();
    let client = Client::from_conf(service_config);

    tracing::info!("sending metrics...");
    client
        .put_metric_data()
        .namespace("CloudWatchTestMetricsBrivinc")
        .metric_data(
            aws_sdk_cloudwatch::types::MetricDatum::builder()
                .metric_name(format!("MyMetricNameIsALittleLong"))
                .value(0.0)
                .build(),
        )
        .send()
        .await
        .unwrap();
}
``` 

----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._

---------

Co-authored-by: ysaito1001 <awsaito@amazon.com>
2024-09-18 17:06:58 +00:00
..
benches Bump Rust MSRV to 1.63.0 (#2222) 2023-02-10 12:59:31 -08:00
fuzz Fix `SPDX-License-Identifier` in header comments (#1377) 2022-05-09 09:50:46 -05:00
proptest-regressions/instant Relegate `chrono` to an optional feature in a new conversion crate (#849) 2021-11-11 16:01:30 -08:00
src Fix request compression (#3820) 2024-09-18 17:06:58 +00:00
test_data Omit fractional seconds from `http-date` format (#2989) 2023-09-21 18:54:03 +00:00
Cargo.toml Fix request compression (#3820) 2024-09-18 17:06:58 +00:00
LICENSE Prefix Smithy runtime crates with `aws-` (#788) 2021-10-20 10:21:15 -07:00
README.md Fix repo org move issues (#3166) 2023-11-10 18:51:04 +00:00
additional-ci Add support for constructing sdk body types from http-body 1.0 (#3300) 2023-12-13 20:57:00 +00:00
external-types.toml Fix repo org move issues (#3166) 2023-11-10 18:51:04 +00:00

README.md

Fundamental Types for Smithy Services

This crate implements fundamental types shared across all service clients generated by smithy-rs. Generally, you should not need to take a direct dependency on this crate as service clients should publicly re-export the types when used.

This crate is part of the AWS SDK for Rust and the smithy-rs code generator. In most cases, it should not be used directly.