AWS SDK

AWS SDK

rev. daaaaae30b6928be97b33eccac35ffadde7c457d (ignoring whitespace)

Files changed:

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/defaults.rs

@@ -1,1 +48,48 @@
    8      8   
//! Note: these are the absolute base-level defaults. They may not be the defaults
    9      9   
//! for _your_ client, since many things can change these defaults on the way to
   10     10   
//! code generating and constructing a full client.
   11     11   
   12     12   
use crate::client::http::body::content_length_enforcement::EnforceContentLengthRuntimePlugin;
   13     13   
use crate::client::identity::IdentityCache;
   14     14   
use crate::client::retries::strategy::standard::TokenBucketProvider;
   15     15   
use crate::client::retries::strategy::StandardRetryStrategy;
   16     16   
use crate::client::retries::RetryPartition;
   17     17   
use aws_smithy_async::rt::sleep::default_async_sleep;
   18         -
use aws_smithy_async::time::SystemTimeSource;
          18  +
use aws_smithy_async::time::{SharedTimeSource, SystemTimeSource, TimeSource};
   19     19   
use aws_smithy_runtime_api::box_error::BoxError;
   20     20   
use aws_smithy_runtime_api::client::behavior_version::BehaviorVersion;
   21     21   
use aws_smithy_runtime_api::client::http::SharedHttpClient;
   22     22   
use aws_smithy_runtime_api::client::runtime_components::{
   23     23   
    RuntimeComponentsBuilder, SharedConfigValidator,
   24     24   
};
   25     25   
use aws_smithy_runtime_api::client::runtime_plugin::{
   26     26   
    Order, SharedRuntimePlugin, StaticRuntimePlugin,
   27     27   
};
   28     28   
use aws_smithy_runtime_api::client::stalled_stream_protection::StalledStreamProtectionConfig;
@@ -99,99 +170,207 @@
  119    119   
pub fn default_time_source_plugin() -> Option<SharedRuntimePlugin> {
  120    120   
    Some(
  121    121   
        default_plugin("default_time_source_plugin", |components| {
  122    122   
            components.with_time_source(Some(SystemTimeSource::new()))
  123    123   
        })
  124    124   
        .into_shared(),
  125    125   
    )
  126    126   
}
  127    127   
  128    128   
/// Runtime plugin that sets the default retry strategy, config (disabled), and partition.
         129  +
#[deprecated = "Use default_retry_config_plugin_v2 to get a TokenBucket that respects the user provided TimeSource."]
  129    130   
pub fn default_retry_config_plugin(
  130    131   
    default_partition_name: impl Into<Cow<'static, str>>,
  131    132   
) -> Option<SharedRuntimePlugin> {
  132    133   
    let retry_partition = RetryPartition::new(default_partition_name);
  133    134   
    Some(
  134    135   
        default_plugin("default_retry_config_plugin", |components| {
  135    136   
            components
  136    137   
                .with_retry_strategy(Some(StandardRetryStrategy::new()))
  137    138   
                .with_config_validator(SharedConfigValidator::base_client_config_fn(
  138    139   
                    validate_retry_config,
  139    140   
                ))
  140         -
                .with_interceptor(TokenBucketProvider::new(retry_partition.clone()))
         141  +
                .with_interceptor(TokenBucketProvider::new(
         142  +
                    retry_partition.clone(),
         143  +
                    SharedTimeSource::default(), // Replicates previous behavior
         144  +
                ))
         145  +
        })
         146  +
        .with_config(layer("default_retry_config", |layer| {
         147  +
            layer.store_put(RetryConfig::disabled());
         148  +
            layer.store_put(retry_partition);
         149  +
        }))
         150  +
        .into_shared(),
         151  +
    )
         152  +
}
         153  +
         154  +
/// Runtime plugin that sets the default retry strategy, config (disabled), and partition.
         155  +
pub fn default_retry_config_plugin_v2(
         156  +
    default_plugin_params: &DefaultPluginParams,
         157  +
) -> Option<SharedRuntimePlugin> {
         158  +
    let retry_partition = RetryPartition::new(
         159  +
        default_plugin_params
         160  +
            .retry_partition_name()
         161  +
            .clone()
         162  +
            .expect("retry_partition_name is required"),
         163  +
    );
         164  +
    Some(
         165  +
        default_plugin("default_retry_config_plugin", |components| {
         166  +
            components
         167  +
                .with_retry_strategy(Some(StandardRetryStrategy::new()))
         168  +
                .with_config_validator(SharedConfigValidator::base_client_config_fn(
         169  +
                    validate_retry_config,
         170  +
                ))
         171  +
                .with_interceptor(TokenBucketProvider::new(
         172  +
                    retry_partition.clone(),
         173  +
                    default_plugin_params
         174  +
                        .time_source
         175  +
                        .clone()
         176  +
                        .unwrap_or_default(),
         177  +
                ))
  141    178   
        })
  142    179   
        .with_config(layer("default_retry_config", |layer| {
  143    180   
            layer.store_put(RetryConfig::disabled());
  144    181   
            layer.store_put(retry_partition);
  145    182   
        }))
  146    183   
        .into_shared(),
  147    184   
    )
  148    185   
}
  149    186   
  150    187   
fn validate_retry_config(
@@ -261,298 +357,412 @@
  281    318   
}
  282    319   
  283    320   
/// Arguments for the [`default_plugins`] method.
  284    321   
///
  285    322   
/// This is a struct to enable adding new parameters in the future without breaking the API.
  286    323   
#[non_exhaustive]
  287    324   
#[derive(Debug, Default)]
  288    325   
pub struct DefaultPluginParams {
  289    326   
    retry_partition_name: Option<Cow<'static, str>>,
  290    327   
    behavior_version: Option<BehaviorVersion>,
         328  +
    time_source: Option<SharedTimeSource>,
  291    329   
}
  292    330   
  293    331   
impl DefaultPluginParams {
  294    332   
    /// Creates a new [`DefaultPluginParams`].
  295    333   
    pub fn new() -> Self {
  296    334   
        Default::default()
  297    335   
    }
  298    336   
  299    337   
    /// Sets the retry partition name.
  300    338   
    pub fn with_retry_partition_name(mut self, name: impl Into<Cow<'static, str>>) -> Self {
  301    339   
        self.retry_partition_name = Some(name.into());
  302    340   
        self
  303    341   
    }
  304    342   
         343  +
    /// Gets the retry partition name.
         344  +
    pub fn retry_partition_name(&self) -> &Option<Cow<'static, str>> {
         345  +
        &self.retry_partition_name
         346  +
    }
         347  +
  305    348   
    /// Sets the behavior major version.
  306    349   
    pub fn with_behavior_version(mut self, version: BehaviorVersion) -> Self {
  307    350   
        self.behavior_version = Some(version);
  308    351   
        self
  309    352   
    }
         353  +
         354  +
    /// Gets the behavior major version.
         355  +
    pub fn behavior_version(&self) -> &Option<BehaviorVersion> {
         356  +
        &self.behavior_version
         357  +
    }
         358  +
         359  +
    /// Sets the time_source.
         360  +
    pub fn with_time_source(mut self, time_source: impl TimeSource + 'static) -> Self {
         361  +
        self.time_source = Some(SharedTimeSource::new(time_source));
         362  +
        self
         363  +
    }
         364  +
         365  +
    /// Gets the time_source.
         366  +
    pub fn time_source(&self) -> &Option<SharedTimeSource> {
         367  +
        &self.time_source
         368  +
    }
  310    369   
}
  311    370   
  312    371   
/// All default plugins.
  313    372   
pub fn default_plugins(
  314    373   
    params: DefaultPluginParams,
  315    374   
) -> impl IntoIterator<Item = SharedRuntimePlugin> {
  316    375   
    let behavior_version = params
  317    376   
        .behavior_version
  318    377   
        .unwrap_or_else(BehaviorVersion::latest);
  319    378   
  320    379   
    [
  321    380   
        default_http_client_plugin_v2(behavior_version),
  322    381   
        default_identity_cache_plugin(),
  323         -
        default_retry_config_plugin(
  324         -
            params
  325         -
                .retry_partition_name
  326         -
                .expect("retry_partition_name is required"),
  327         -
        ),
         382  +
        default_retry_config_plugin_v2(&params),
  328    383   
        default_sleep_impl_plugin(),
  329    384   
        default_time_source_plugin(),
  330    385   
        default_timeout_config_plugin(),
  331    386   
        enforce_content_length_runtime_plugin(),
  332    387   
        default_stalled_stream_protection_config_plugin_v2(behavior_version),
  333    388   
    ]
  334    389   
    .into_iter()
  335    390   
    .flatten()
  336    391   
    .collect::<Vec<SharedRuntimePlugin>>()
  337    392   
}

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/retries/strategy/standard.rs

@@ -1,1 +38,39 @@
    1      1   
/*
    2      2   
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    3      3   
 * SPDX-License-Identifier: Apache-2.0
    4      4   
 */
    5      5   
    6      6   
use std::sync::Mutex;
    7      7   
use std::time::{Duration, SystemTime};
    8      8   
           9  +
use aws_smithy_async::time::SharedTimeSource;
    9     10   
use tokio::sync::OwnedSemaphorePermit;
   10     11   
use tracing::{debug, trace};
   11     12   
   12     13   
use aws_smithy_runtime_api::box_error::BoxError;
   13     14   
use aws_smithy_runtime_api::client::interceptors::context::{
   14     15   
    BeforeTransmitInterceptorContextMut, InterceptorContext,
   15     16   
};
   16     17   
use aws_smithy_runtime_api::client::interceptors::Intercept;
   17     18   
use aws_smithy_runtime_api::client::retries::classifiers::{RetryAction, RetryReason};
   18     19   
use aws_smithy_runtime_api::client::retries::{RequestAttempts, RetryStrategy, ShouldAttempt};
@@ -344,345 +435,444 @@
  364    365   
pub(crate) struct TokenBucketProvider {
  365    366   
    default_partition: RetryPartition,
  366    367   
    token_bucket: TokenBucket,
  367    368   
}
  368    369   
  369    370   
impl TokenBucketProvider {
  370    371   
    /// Create a new token bucket provider with the given default retry partition.
  371    372   
    ///
  372    373   
    /// NOTE: This partition should be the one used for every operation on a client
  373    374   
    /// unless config is overridden.
  374         -
    pub(crate) fn new(default_partition: RetryPartition) -> Self {
  375         -
        let token_bucket = TOKEN_BUCKET.get_or_init_default(default_partition.clone());
         375  +
    pub(crate) fn new(default_partition: RetryPartition, time_source: SharedTimeSource) -> Self {
         376  +
        let token_bucket = TOKEN_BUCKET.get_or_init(default_partition.clone(), || {
         377  +
            let mut tb = TokenBucket::default();
         378  +
            tb.update_time_source(time_source);
         379  +
            tb
         380  +
        });
  376    381   
        Self {
  377    382   
            default_partition,
  378    383   
            token_bucket,
  379    384   
        }
  380    385   
    }
  381    386   
}
  382    387   
  383    388   
impl Intercept for TokenBucketProvider {
  384    389   
    fn name(&self) -> &'static str {
  385    390   
        "TokenBucketProvider"
  386    391   
    }
  387    392   
  388    393   
    fn modify_before_retry_loop(
  389    394   
        &self,
  390    395   
        _context: &mut BeforeTransmitInterceptorContextMut<'_>,
  391         -
        _runtime_components: &RuntimeComponents,
         396  +
        runtime_components: &RuntimeComponents,
  392    397   
        cfg: &mut ConfigBag,
  393    398   
    ) -> Result<(), BoxError> {
  394    399   
        let retry_partition = cfg.load::<RetryPartition>().expect("set in default config");
  395    400   
  396    401   
        let tb = match &retry_partition.inner {
  397    402   
            RetryPartitionInner::Default(name) => {
  398    403   
                // we store the original retry partition configured and associated token bucket
  399    404   
                // for the client when created so that we can avoid locking on _every_ request
  400    405   
                // from _every_ client
  401    406   
                if name == self.default_partition.name() {
  402    407   
                    // avoid contention on the global lock
  403    408   
                    self.token_bucket.clone()
  404    409   
                } else {
  405         -
                    TOKEN_BUCKET.get_or_init_default(retry_partition.clone())
         410  +
                    TOKEN_BUCKET.get_or_init(retry_partition.clone(), || {
         411  +
                        let mut tb = TokenBucket::default();
         412  +
                        tb.update_time_source(runtime_components.time_source().unwrap_or_default());
         413  +
                        tb
         414  +
                    })
  406    415   
                }
  407    416   
            }
  408    417   
            RetryPartitionInner::Custom { token_bucket, .. } => token_bucket.clone(),
  409    418   
        };
  410    419   
  411    420   
        trace!("token bucket for {retry_partition:?} added to config bag");
  412    421   
        let mut layer = Layer::new("token_bucket_partition");
  413    422   
        layer.store_put(tb);
  414    423   
        cfg.push_layer(layer);
  415    424   
        Ok(())

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/retries/token_bucket.rs

@@ -254,254 +313,326 @@
  274    274   
    /// Returns true if the token bucket is empty, false otherwise
  275    275   
    pub fn is_empty(&self) -> bool {
  276    276   
        self.semaphore.available_permits() == 0
  277    277   
    }
  278    278   
  279    279   
    #[allow(dead_code)] // only used in tests
  280    280   
    #[cfg(any(test, feature = "test-util", feature = "legacy-test-util"))]
  281    281   
    pub(crate) fn available_permits(&self) -> usize {
  282    282   
        self.semaphore.available_permits()
  283    283   
    }
         284  +
         285  +
    // Allows us to create a default client but still update the time_source
         286  +
    pub(crate) fn update_time_source(&mut self, new_time_source: SharedTimeSource) {
         287  +
        self.time_source = new_time_source;
         288  +
    }
         289  +
         290  +
    #[allow(dead_code)]
         291  +
    #[doc(hidden)]
         292  +
    #[cfg(any(test, feature = "test-util", feature = "legacy-test-util"))]
         293  +
    /// This method should only be used for internal testing
         294  +
    pub fn time_source(&self) -> &SharedTimeSource {
         295  +
        &self.time_source
         296  +
    }
  284    297   
}
  285    298   
  286    299   
/// Builder for constructing a `TokenBucket`.
  287    300   
#[derive(Clone, Debug, Default)]
  288    301   
pub struct TokenBucketBuilder {
  289    302   
    capacity: Option<usize>,
  290    303   
    retry_cost: Option<u32>,
  291    304   
    timeout_retry_cost: Option<u32>,
  292    305   
    success_reward: Option<f32>,
  293    306   
    refill_rate: Option<f32>,

tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/src/config.rs

@@ -1539,1539 +1598,1599 @@
 1559   1559   
    };
 1560   1560   
 1561   1561   
    let scope = "aws-sdk-bedrockruntime";
 1562   1562   
 1563   1563   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1564   1564   
                        // defaults
 1565   1565   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1566   1566   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1567   1567   
                                .with_retry_partition_name(default_retry_partition)
 1568   1568   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1569  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1569   1570   
                        ))
 1570   1571   
                        // user config
 1571   1572   
                        .with_client_plugin(
 1572   1573   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1573   1574   
                                .with_config(config.config.clone())
 1574   1575   
                                .with_runtime_components(config.runtime_components.clone())
 1575   1576   
                        )
 1576   1577   
                        // codegen config
 1577   1578   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1578   1579   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/src/config.rs

@@ -1465,1465 +1524,1525 @@
 1485   1485   
    };
 1486   1486   
 1487   1487   
    let scope = "aws-sdk-cloudwatchlogs";
 1488   1488   
 1489   1489   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1490   1490   
                        // defaults
 1491   1491   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1492   1492   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1493   1493   
                                .with_retry_partition_name(default_retry_partition)
 1494   1494   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1495  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1495   1496   
                        ))
 1496   1497   
                        // user config
 1497   1498   
                        .with_client_plugin(
 1498   1499   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1499   1500   
                                .with_config(config.config.clone())
 1500   1501   
                                .with_runtime_components(config.runtime_components.clone())
 1501   1502   
                        )
 1502   1503   
                        // codegen config
 1503   1504   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1504   1505   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/codecatalyst/src/config.rs

@@ -1454,1454 +1513,1514 @@
 1474   1474   
    };
 1475   1475   
 1476   1476   
    let scope = "aws-sdk-codecatalyst";
 1477   1477   
 1478   1478   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1479   1479   
                        // defaults
 1480   1480   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1481   1481   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1482   1482   
                                .with_retry_partition_name(default_retry_partition)
 1483   1483   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1484  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1484   1485   
                        ))
 1485   1486   
                        // user config
 1486   1487   
                        .with_client_plugin(
 1487   1488   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1488   1489   
                                .with_config(config.config.clone())
 1489   1490   
                                .with_runtime_components(config.runtime_components.clone())
 1490   1491   
                        )
 1491   1492   
                        // codegen config
 1492   1493   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1493   1494   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/config/src/config.rs

@@ -1447,1447 +1506,1507 @@
 1467   1467   
    };
 1468   1468   
 1469   1469   
    let scope = "aws-sdk-config";
 1470   1470   
 1471   1471   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1472   1472   
                        // defaults
 1473   1473   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1474   1474   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1475   1475   
                                .with_retry_partition_name(default_retry_partition)
 1476   1476   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1477  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1477   1478   
                        ))
 1478   1479   
                        // user config
 1479   1480   
                        .with_client_plugin(
 1480   1481   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1481   1482   
                                .with_config(config.config.clone())
 1482   1483   
                                .with_runtime_components(config.runtime_components.clone())
 1483   1484   
                        )
 1484   1485   
                        // codegen config
 1485   1486   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1486   1487   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/dynamodb/src/config.rs

@@ -1481,1481 +1540,1541 @@
 1501   1501   
    };
 1502   1502   
 1503   1503   
    let scope = "aws-sdk-dynamodb";
 1504   1504   
 1505   1505   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1506   1506   
                        // defaults
 1507   1507   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1508   1508   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1509   1509   
                                .with_retry_partition_name(default_retry_partition)
 1510   1510   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1511  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1511   1512   
                        ))
 1512   1513   
                        // user config
 1513   1514   
                        .with_client_plugin(
 1514   1515   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1515   1516   
                                .with_config(config.config.clone())
 1516   1517   
                                .with_runtime_components(config.runtime_components.clone())
 1517   1518   
                        )
 1518   1519   
                        // codegen config
 1519   1520   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1520   1521   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/ec2/src/config.rs

@@ -1465,1465 +1524,1525 @@
 1485   1485   
    };
 1486   1486   
 1487   1487   
    let scope = "aws-sdk-ec2";
 1488   1488   
 1489   1489   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1490   1490   
                        // defaults
 1491   1491   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1492   1492   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1493   1493   
                                .with_retry_partition_name(default_retry_partition)
 1494   1494   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1495  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1495   1496   
                        ))
 1496   1497   
                        // user config
 1497   1498   
                        .with_client_plugin(
 1498   1499   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1499   1500   
                                .with_config(config.config.clone())
 1500   1501   
                                .with_runtime_components(config.runtime_components.clone())
 1501   1502   
                        )
 1502   1503   
                        // codegen config
 1503   1504   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1504   1505   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/ecs/src/config.rs

@@ -1465,1465 +1524,1525 @@
 1485   1485   
    };
 1486   1486   
 1487   1487   
    let scope = "aws-sdk-ecs";
 1488   1488   
 1489   1489   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1490   1490   
                        // defaults
 1491   1491   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1492   1492   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1493   1493   
                                .with_retry_partition_name(default_retry_partition)
 1494   1494   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1495  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1495   1496   
                        ))
 1496   1497   
                        // user config
 1497   1498   
                        .with_client_plugin(
 1498   1499   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1499   1500   
                                .with_config(config.config.clone())
 1500   1501   
                                .with_runtime_components(config.runtime_components.clone())
 1501   1502   
                        )
 1502   1503   
                        // codegen config
 1503   1504   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1504   1505   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/glacier/src/config.rs

@@ -1448,1448 +1507,1508 @@
 1468   1468   
    };
 1469   1469   
 1470   1470   
    let scope = "aws-sdk-glacier";
 1471   1471   
 1472   1472   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1473   1473   
                        // defaults
 1474   1474   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1475   1475   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1476   1476   
                                .with_retry_partition_name(default_retry_partition)
 1477   1477   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1478  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1478   1479   
                        ))
 1479   1480   
                        // user config
 1480   1481   
                        .with_client_plugin(
 1481   1482   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1482   1483   
                                .with_config(config.config.clone())
 1483   1484   
                                .with_runtime_components(config.runtime_components.clone())
 1484   1485   
                        )
 1485   1486   
                        // codegen config
 1486   1487   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1487   1488   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/iam/src/config.rs

@@ -1447,1447 +1506,1507 @@
 1467   1467   
    };
 1468   1468   
 1469   1469   
    let scope = "aws-sdk-iam";
 1470   1470   
 1471   1471   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1472   1472   
                        // defaults
 1473   1473   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1474   1474   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1475   1475   
                                .with_retry_partition_name(default_retry_partition)
 1476   1476   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1477  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1477   1478   
                        ))
 1478   1479   
                        // user config
 1479   1480   
                        .with_client_plugin(
 1480   1481   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1481   1482   
                                .with_config(config.config.clone())
 1482   1483   
                                .with_runtime_components(config.runtime_components.clone())
 1483   1484   
                        )
 1484   1485   
                        // codegen config
 1485   1486   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1486   1487   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/kms/src/config.rs

@@ -1447,1447 +1506,1507 @@
 1467   1467   
    };
 1468   1468   
 1469   1469   
    let scope = "aws-sdk-kms";
 1470   1470   
 1471   1471   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1472   1472   
                        // defaults
 1473   1473   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1474   1474   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1475   1475   
                                .with_retry_partition_name(default_retry_partition)
 1476   1476   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1477  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1477   1478   
                        ))
 1478   1479   
                        // user config
 1479   1480   
                        .with_client_plugin(
 1480   1481   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1481   1482   
                                .with_config(config.config.clone())
 1482   1483   
                                .with_runtime_components(config.runtime_components.clone())
 1483   1484   
                        )
 1484   1485   
                        // codegen config
 1485   1486   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1486   1487   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/lambda/src/config.rs

@@ -1447,1447 +1506,1507 @@
 1467   1467   
    };
 1468   1468   
 1469   1469   
    let scope = "aws-sdk-lambda";
 1470   1470   
 1471   1471   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1472   1472   
                        // defaults
 1473   1473   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1474   1474   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1475   1475   
                                .with_retry_partition_name(default_retry_partition)
 1476   1476   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1477  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1477   1478   
                        ))
 1478   1479   
                        // user config
 1479   1480   
                        .with_client_plugin(
 1480   1481   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1481   1482   
                                .with_config(config.config.clone())
 1482   1483   
                                .with_runtime_components(config.runtime_components.clone())
 1483   1484   
                        )
 1484   1485   
                        // codegen config
 1485   1486   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1486   1487   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())

tmp-codegen-diff/aws-sdk/sdk/polly/src/config.rs

@@ -1447,1447 +1506,1507 @@
 1467   1467   
    };
 1468   1468   
 1469   1469   
    let scope = "aws-sdk-polly";
 1470   1470   
 1471   1471   
    let mut plugins = ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins::new()
 1472   1472   
                        // defaults
 1473   1473   
                        .with_client_plugins(::aws_smithy_runtime::client::defaults::default_plugins(
 1474   1474   
                            ::aws_smithy_runtime::client::defaults::DefaultPluginParams::new()
 1475   1475   
                                .with_retry_partition_name(default_retry_partition)
 1476   1476   
                                .with_behavior_version(config.behavior_version.expect("Invalid client configuration: A behavior major version must be set when sending a request or constructing a client. You must set it during client construction or by enabling the `behavior-version-latest` cargo feature."))
        1477  +
                                .with_time_source(config.runtime_components.time_source().unwrap_or_default())
 1477   1478   
                        ))
 1478   1479   
                        // user config
 1479   1480   
                        .with_client_plugin(
 1480   1481   
                            ::aws_smithy_runtime_api::client::runtime_plugin::StaticRuntimePlugin::new()
 1481   1482   
                                .with_config(config.config.clone())
 1482   1483   
                                .with_runtime_components(config.runtime_components.clone())
 1483   1484   
                        )
 1484   1485   
                        // codegen config
 1485   1486   
                        .with_client_plugin(crate::config::ServiceRuntimePlugin::new(config.clone()))
 1486   1487   
                        .with_client_plugin(::aws_smithy_runtime::client::auth::no_auth::NoAuthRuntimePlugin::new())