Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ The readiness check port/path and traffic port can be configured using environme
> `HOST`, `READINESS_CHECK_PORT`, `READINESS_CHECK_PATH`, `READINESS_CHECK_PROTOCOL`, `REMOVE_BASE_PATH`, `ASYNC_INIT`.
> Please migrate to the `AWS_LWA_` prefixed versions. Note: `PORT` is not deprecated and remains a supported fallback for `AWS_LWA_PORT`.
>
> Additionally, `AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS` is deprecated. Use `AWS_LWA_READINESS_CHECK_HEALTHY_STATUS` instead.

👉 [Detailed configuration docs](https://awslabs.github.io/aws-lambda-web-adapter/configuration/environment-variables.html)

Expand Down
1 change: 0 additions & 1 deletion docs/guide/src/configuration/environment-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,5 @@ The following non-namespaced variables are deprecated and will be removed in v2.
| `READINESS_CHECK_PROTOCOL` | `AWS_LWA_READINESS_CHECK_PROTOCOL` |
| `REMOVE_BASE_PATH` | `AWS_LWA_REMOVE_BASE_PATH` |
| `ASYNC_INIT` | `AWS_LWA_ASYNC_INIT` |
| `AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS` | `AWS_LWA_READINESS_CHECK_HEALTHY_STATUS` |

> `PORT` is **not** deprecated and remains a supported fallback for `AWS_LWA_PORT`.
42 changes: 1 addition & 41 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ const ENV_READINESS_CHECK_PORT: &str = "AWS_LWA_READINESS_CHECK_PORT";
const ENV_READINESS_CHECK_PATH: &str = "AWS_LWA_READINESS_CHECK_PATH";
const ENV_READINESS_CHECK_PROTOCOL: &str = "AWS_LWA_READINESS_CHECK_PROTOCOL";
const ENV_READINESS_CHECK_HEALTHY_STATUS: &str = "AWS_LWA_READINESS_CHECK_HEALTHY_STATUS";
const ENV_READINESS_CHECK_MIN_UNHEALTHY_STATUS: &str = "AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS";
const ENV_REMOVE_BASE_PATH: &str = "AWS_LWA_REMOVE_BASE_PATH";
const ENV_PASS_THROUGH_PATH: &str = "AWS_LWA_PASS_THROUGH_PATH";
const ENV_ASYNC_INIT: &str = "AWS_LWA_ASYNC_INIT";
Expand Down Expand Up @@ -281,12 +280,6 @@ pub struct AdapterOptions {
/// Default: [`Protocol::Http`]
pub readiness_check_protocol: Protocol,

/// Deprecated: Use `readiness_check_healthy_status` instead.
///
/// Minimum HTTP status code considered unhealthy.
#[deprecated(since = "1.0.0", note = "Use readiness_check_healthy_status instead")]
pub readiness_check_min_unhealthy_status: u16,

/// List of HTTP status codes considered healthy for readiness checks.
///
/// Can be configured via `AWS_LWA_READINESS_CHECK_HEALTHY_STATUS` using:
Expand Down Expand Up @@ -382,36 +375,18 @@ fn get_optional_env_with_deprecation(new_name: &str, old_name: &str) -> Option<S
}

impl Default for AdapterOptions {
#[allow(deprecated)]
fn default() -> Self {
let port = env::var(ENV_PORT)
.or_else(|_| env::var(ENV_PORT_DEPRECATED))
.unwrap_or_else(|_| "8080".to_string());

// Handle readiness check healthy status codes
// New env var takes precedence, then fall back to deprecated min_unhealthy_status
let readiness_check_healthy_status = if let Ok(val) = env::var(ENV_READINESS_CHECK_HEALTHY_STATUS) {
parse_status_codes(&val)
} else if let Ok(val) = env::var(ENV_READINESS_CHECK_MIN_UNHEALTHY_STATUS) {
tracing::warn!(
"Environment variable '{}' is deprecated. \
Please use '{}' instead (e.g., '100-499').",
ENV_READINESS_CHECK_MIN_UNHEALTHY_STATUS,
ENV_READINESS_CHECK_HEALTHY_STATUS
);
let min_unhealthy: u16 = val.parse().unwrap_or(500);
(100..min_unhealthy).collect()
} else {
// Default: 100-499 (same as previous default of min_unhealthy=500)
// Default: 100-499
(100..500).collect()
};

// For backward compatibility, also set the deprecated field
let readiness_check_min_unhealthy_status = env::var(ENV_READINESS_CHECK_MIN_UNHEALTHY_STATUS)
.unwrap_or_else(|_| "500".to_string())
.parse()
.unwrap_or(500);

AdapterOptions {
host: get_env_with_deprecation(ENV_HOST, ENV_HOST_DEPRECATED, "127.0.0.1"),
port: port.clone(),
Expand All @@ -420,7 +395,6 @@ impl Default for AdapterOptions {
ENV_READINESS_CHECK_PORT_DEPRECATED,
&port,
),
readiness_check_min_unhealthy_status,
readiness_check_healthy_status,
readiness_check_path: get_env_with_deprecation(
ENV_READINESS_CHECK_PATH,
Expand Down Expand Up @@ -1056,8 +1030,6 @@ mod tests {
let url = adapter.healthcheck_url.clone();
let protocol = adapter.healthcheck_protocol;

//adapter.check_init_health().await;

assert!(adapter.check_web_readiness(&url, &protocol).await.is_ok());

// Assert app server's healthcheck endpoint got called
Expand Down Expand Up @@ -1088,8 +1060,6 @@ mod tests {
let url = adapter.healthcheck_url.clone();
let protocol = adapter.healthcheck_protocol;

//adapter.check_init_health().await;

assert!(adapter.check_web_readiness(&url, &protocol).await.is_err());

// Assert app server's healthcheck endpoint got called
Expand All @@ -1106,13 +1076,11 @@ mod tests {
});

// Prepare adapter configuration - only 200-399 are healthy
#[allow(deprecated)]
let options = AdapterOptions {
host: app_server.host(),
port: app_server.port().to_string(),
readiness_check_port: app_server.port().to_string(),
readiness_check_path: "/healthcheck".to_string(),
readiness_check_min_unhealthy_status: 400,
readiness_check_healthy_status: (200..400).collect(),
..Default::default()
};
Expand All @@ -1123,8 +1091,6 @@ mod tests {
let url = adapter.healthcheck_url.clone();
let protocol = adapter.healthcheck_protocol;

//adapter.check_init_health().await;

assert!(adapter.check_web_readiness(&url, &protocol).await.is_err());

// Assert app server's healthcheck endpoint got called
Expand All @@ -1137,7 +1103,6 @@ mod tests {
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await.unwrap();
let port = listener.local_addr().unwrap().port();

#[allow(deprecated)]
let options = AdapterOptions {
host: "127.0.0.1".to_string(),
port: port.to_string(),
Expand All @@ -1158,7 +1123,6 @@ mod tests {
#[tokio::test]
async fn test_tcp_readiness_check_failure() {
// Use a port that nothing is listening on
#[allow(deprecated)]
let options = AdapterOptions {
host: "127.0.0.1".to_string(),
port: "19999".to_string(),
Expand Down Expand Up @@ -1203,7 +1167,6 @@ mod tests {

#[test]
fn test_adapter_new_invalid_host() {
#[allow(deprecated)]
let options = AdapterOptions {
host: "invalid host with spaces".to_string(),
port: "8080".to_string(),
Expand All @@ -1218,7 +1181,6 @@ mod tests {

#[test]
fn test_adapter_new_valid_config() {
#[allow(deprecated)]
let options = AdapterOptions {
host: "127.0.0.1".to_string(),
port: "3000".to_string(),
Expand Down Expand Up @@ -1273,7 +1235,6 @@ mod tests {

#[test]
fn test_compression_disabled_with_response_stream() {
#[allow(deprecated)]
let options = AdapterOptions {
compression: true,
invoke_mode: LambdaInvokeMode::ResponseStream,
Expand All @@ -1289,7 +1250,6 @@ mod tests {

#[test]
fn test_compression_enabled_with_buffered() {
#[allow(deprecated)]
let options = AdapterOptions {
compression: true,
invoke_mode: LambdaInvokeMode::Buffered,
Expand Down
2 changes: 0 additions & 2 deletions tests/integ_tests/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ fn test_adapter_options_from_namespaced_env() {
env::set_var("AWS_LWA_ENABLE_COMPRESSION", "true");
env::set_var("AWS_LWA_INVOKE_MODE", "response_stream");
env::set_var("AWS_LWA_AUTHORIZATION_SOURCE", "auth-token");
env::remove_var("AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS");

// Initialize adapter with env options
let options = AdapterOptions::default();
Expand Down Expand Up @@ -964,7 +963,6 @@ fn test_deprecated_env_var_fallback() {
env::remove_var("AWS_LWA_INVOKE_MODE");
env::remove_var("AWS_LWA_AUTHORIZATION_SOURCE");
env::remove_var("AWS_LWA_READINESS_CHECK_HEALTHY_STATUS");
env::remove_var("AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS");

// Set only deprecated (non-prefixed) env vars
env::set_var("PORT", "4000");
Expand Down
Loading