Skip to content

DataExchange job marked as failed when response is 200 with valid JSON body (header parsing error) #1392

@Max0u

Description

@Max0u

Describe the bug

When submitting a job to LiveRamp via DataExchange, the API call succeeds with HTTP 200 and a valid JSON body including a Job ID and success status. However, an internal error while parsing response headers (Failed to parse ResponseHeaders from prefix header) appears.

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

If LiveRamp responds with:

  • HTTP status 200
  • A JSON body containing a valid Job ID and a success-like status (e.g. "ADX Start job submitted"),

Then:

  • The returned LiveRamp Job ID should be returned.
  • Missing or unexpected headers should not cause the entire task to fail unless they are strictly required and validated.

Current Behavior

The LiveRamp API responds with 200 OK and a JSON body confirming that the job was submitted but return a SdkError

Reproduction Steps

 // Cargo.toml dependencies:
 // aws-sdk-dataexchange = "1.93.0"
 // aws-config = "1.8.11"
 // tokio = { version = "1", features = ["full"] }

 use aws_sdk_dataexchange::Client;

 #[tokio::main]
 async fn main() {
     let config = aws_config::from_env()
         .region(aws_sdk_dataexchange::config::Region::new("us-east-1"))
         .load()
         .await;
     let client = Client::new(&config);

     let result = client
         .send_api_asset()
         .data_set_id("your-data-set-id")
         .revision_id("your-revision-id")
         .asset_id("your-asset-id")
         .method("POST")
         .path("/adx/job/start")
         .body(r#"{"input_s3":"s3://bucket/file.csv"}"#)
         .send()
         .await;

     match result {
         Ok(resp) => println!("Success: {:?}", resp.body()),
         Err(e) => println!("Error: {e:?}"),
     }
 }

Possible Solution

No response

Additional Information/Context

No response

Version

├── aws-config v1.8.11
│   ├── aws-credential-types v1.2.10
│   │   ├── aws-smithy-async v1.2.6
│   │   ├── aws-smithy-runtime-api v1.9.2
│   │   │   ├── aws-smithy-async v1.2.6 (*)
│   │   │   ├── aws-smithy-types v1.3.4
│   │   ├── aws-smithy-types v1.3.4 (*)
│   ├── aws-runtime v1.5.16
│   │   ├── aws-credential-types v1.2.10 (*)
│   │   ├── aws-sigv4 v1.3.6
│   │   │   ├── aws-credential-types v1.2.10 (*)
│   │   │   ├── aws-smithy-eventstream v0.60.13
│   │   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   │   ├── aws-smithy-http v0.62.5
│   │   │   │   ├── aws-smithy-eventstream v0.60.13 (*)
│   │   │   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-async v1.2.6 (*)
│   │   ├── aws-smithy-eventstream v0.60.13 (*)
│   │   ├── aws-smithy-http v0.62.5 (*)
│   │   ├── aws-smithy-runtime v1.9.4
│   │   │   ├── aws-smithy-async v1.2.6 (*)
│   │   │   ├── aws-smithy-http v0.62.5 (*)
│   │   │   ├── aws-smithy-http-client v1.1.4
│   │   │   │   ├── aws-smithy-async v1.2.6 (*)
│   │   │   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   │   │   │   │   ├── aws-lc-rs v1.15.1
│   │   │   │   │   │   │   ├── aws-lc-sys v0.34.0
│   │   │   │   │   │   │   ├── aws-lc-rs v1.15.1 (*)
│   │   │   ├── aws-smithy-observability v0.1.4
│   │   │   │   └── aws-smithy-runtime-api v1.9.2 (*)
│   │   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-types v1.3.10
│   │   │   ├── aws-credential-types v1.2.10 (*)
│   │   │   ├── aws-smithy-async v1.2.6 (*)
│   │   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   │   ├── aws-smithy-types v1.3.4 (*)
│   ├── aws-sdk-sso v1.90.0
│   │   ├── aws-credential-types v1.2.10 (*)
│   │   ├── aws-runtime v1.5.16 (*)
│   │   ├── aws-smithy-async v1.2.6 (*)
│   │   ├── aws-smithy-http v0.62.5 (*)
│   │   ├── aws-smithy-json v0.61.7
│   │   │   └── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-runtime v1.9.4 (*)
│   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-types v1.3.10 (*)
│   ├── aws-sdk-ssooidc v1.92.0
│   │   ├── aws-credential-types v1.2.10 (*)
│   │   ├── aws-runtime v1.5.16 (*)
│   │   ├── aws-smithy-async v1.2.6 (*)
│   │   ├── aws-smithy-http v0.62.5 (*)
│   │   ├── aws-smithy-json v0.61.7 (*)
│   │   ├── aws-smithy-runtime v1.9.4 (*)
│   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-types v1.3.10 (*)
│   ├── aws-sdk-sts v1.94.0
│   │   ├── aws-credential-types v1.2.10 (*)
│   │   ├── aws-runtime v1.5.16 (*)
│   │   ├── aws-smithy-async v1.2.6 (*)
│   │   ├── aws-smithy-http v0.62.5 (*)
│   │   ├── aws-smithy-json v0.61.7 (*)
│   │   ├── aws-smithy-query v0.60.8
│   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-runtime v1.9.4 (*)
│   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-xml v0.60.12
│   │   ├── aws-types v1.3.10 (*)
│   ├── aws-smithy-async v1.2.6 (*)
│   ├── aws-smithy-http v0.62.5 (*)
│   ├── aws-smithy-json v0.61.7 (*)
│   ├── aws-smithy-runtime v1.9.4 (*)
│   ├── aws-smithy-runtime-api v1.9.2 (*)
│   ├── aws-smithy-types v1.3.4 (*)
│   ├── aws-types v1.3.10 (*)
├── aws-sdk-dataexchange v1.93.0
│   ├── aws-credential-types v1.2.10 (*)
│   ├── aws-runtime v1.5.16 (*)
│   ├── aws-smithy-async v1.2.6 (*)
│   ├── aws-smithy-http v0.62.5 (*)
│   ├── aws-smithy-json v0.61.7 (*)
│   ├── aws-smithy-runtime v1.9.4 (*)
│   ├── aws-smithy-runtime-api v1.9.2 (*)
│   ├── aws-smithy-types v1.3.4 (*)
│   ├── aws-types v1.3.10 (*)
│   ├── aws-config v1.8.11 (*)
│   ├── aws-sdk-s3 v1.116.0
│   │   ├── aws-credential-types v1.2.10 (*)
│   │   ├── aws-runtime v1.5.16 (*)
│   │   ├── aws-sigv4 v1.3.6 (*)
│   │   ├── aws-smithy-async v1.2.6 (*)
│   │   ├── aws-smithy-checksums v0.63.11
│   │   │   ├── aws-smithy-http v0.62.5 (*)
│   │   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-eventstream v0.60.13 (*)
│   │   ├── aws-smithy-http v0.62.5 (*)
│   │   ├── aws-smithy-json v0.61.7 (*)
│   │   ├── aws-smithy-runtime v1.9.4 (*)
│   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-smithy-xml v0.60.12 (*)
│   │   ├── aws-types v1.3.10 (*)
│   ├── aws-config v1.8.11 (*)
│   ├── aws-sdk-athena v1.96.0
│   │   ├── aws-credential-types v1.2.10 (*)
│   │   ├── aws-runtime v1.5.16 (*)
│   │   ├── aws-smithy-async v1.2.6 (*)
│   │   ├── aws-smithy-http v0.62.5 (*)
│   │   ├── aws-smithy-json v0.61.7 (*)
│   │   ├── aws-smithy-runtime v1.9.4 (*)
│   │   ├── aws-smithy-runtime-api v1.9.2 (*)
│   │   ├── aws-smithy-types v1.3.4 (*)
│   │   ├── aws-types v1.3.10 (*)
│   ├── aws-sdk-s3 v1.116.0 (*)
│   ├── aws-sdk-s3 v1.116.0 (*)
├── aws-config v1.8.11 (*)
├── aws-sdk-s3 v1.116.0 (*)

Environment details (OS name and version, etc.)

MacOs 26.0.1 (25A362)

Logs

DataExchangeError(
      "Error submitting job to LiveRamp via DataExchange: ServiceError(
        ServiceError {
          source: Unhandled(
            Unhandled {
              source: \"Failed to parse ResponseHeaders from prefix header `\",
              meta: ErrorMetadata { code: None, message: None, extras: None }
            }
          ),
          raw: Response { status: StatusCode(200), ... }
        }
      )"
    )
[2025-12-11T14:14:23Z ERROR audience_ingester_api::task_queue::worker] 
ERROR executing task, saving failed attempt: LiveRampTaskError(
  LiveRampClientError(
    DataExchangeError(
      "Error submitting job to LiveRamp via DataExchange: ServiceError(
        ServiceError {
          source: Unhandled(
            Unhandled {
              source: \"Failed to parse ResponseHeaders from prefix header \",
              meta: ErrorMetadata { code: None, message: None, extras: None }
            }
          ),
          raw: Response {
            status: StatusCode(200),
            headers: Headers {
              headers: {
                \"content-type\": HeaderValue { _private: H1(\"application/json\") },
                \"content-length\": HeaderValue { _private: H1(\"97\") },
                \"date\": HeaderValue { _private: H1(\"Thu, 11 Dec 2025 14:14:23 GMT\") },
                \"x-amz-cf-pop\": HeaderValue { _private: H1(\"**REDACTED**\") },
                \"x-amz-cf-pop\": HeaderValue { _private: H1(\"**REDACTED**\") },
                \"x-amzn-requestid\": HeaderValue { _private: H1(\"**REDACTED**\") },
                \"x-amzn-remapped-x-amzn-requestid\": HeaderValue { _private: H1(\"**REDACTED**\") },
                \"x-amzn-remapped-content-length\": HeaderValue { _private: H1(\"97\") },
                \"x-amzn-remapped-date\": HeaderValue { _private: H1(\"Thu, 11 Dec 2025 14:14:23 GMT\") },
                \"x-amzn-remapped-connection\": HeaderValue { _private: H1(\"close\") },
                \"via\": HeaderValue { _private: H1(\"**REDACTED**\") },
                \"x-amz-apigw-id\": HeaderValue { _private: H1(\"**REDACTED**\") },
                \"x-amzn-trace-id\": HeaderValue { _private: H1(\"1-693ad1b6-6d923f1d7a36c2ed5fe37748\") },
                \"x-cache\": HeaderValue { _private: H1(\"Miss from cloudfront\") },
                \"x-amz-cf-id\": HeaderValue { _private: H1(\"**REDACTED**\") }
              }
            },
            body: SdkBody {
              inner: Once(Some(b"{\"Job ID\": \"**REDACTED**\", \"Status\": \"ADX Start job submitted\"}")),
              retryable: true
            },
            extensions: Extensions { 
              extensions_02x: Extensions, 
              extensions_1x: { hyper_util::client::legacy::connect::http::HttpInfo } 
            }
          }
        }
      )"
    )
  )
)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.p1This is a high priority issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions