Skip to content

[core] Unsupported request bodies receive a retryable error code #40387

Description

@aanubhav-msft

Describe the bug
An unsupported request body now fails with REQUEST_SEND_ERROR. Storage retries this error, delaying failure by approximately 16 seconds instead of failing immediately with released core.

To Reproduce

  1. Use the Node transport from PR [core] Support opt-in Expect: 100-continue in Node HTTP/1 transport #40258 with storage's default retry policy.
  2. Send an unsupported body, such as a Node Blob.
  3. Observe that "Unrecognized body type" receives REQUEST_SEND_ERROR and is retried.

Expected behavior
Unsupported body types should fail immediately with a non-retryable error.

Screenshots
N/A

Additional context
Observed while testing #40258. This concerns unnecessary retries, not adding support for new body types.

Activity

  1. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    Thank you for your feedback. Tagging and routing to the team member(s) best able to assist.

    Generated by Agentic Triage for #40387 · copilot · auto · 42.9 AIC · ⌖ 8.6 AIC · ⊞ 15.9K · ◷

  2. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    🎯 Agentic Issue Triage

    Summary: Unsupported request body types (e.g., a Node Blob) now cause the Node transport in @typespec/ts-http-runtime to fail with a retryable REQUEST_SEND_ERROR, causing Storage's default retry policy to retry for ~16 seconds before failing, instead of failing fast with a non-retryable error.

    📋 Issue Details

    Package: @typespec/ts-http-runtime (unreleased changes in PR #40258), @azure/storage-blob
    Affected API: Node HTTP transport body-handling / "Unrecognized body type" error path
    Scenarios:

    Root ask: Unsupported body types should surface a non-retryable error immediately, rather than a retryable REQUEST_SEND_ERROR that gets retried ~16 seconds before ultimately failing.

    🔎 Debugging / Reproduction Notes

    This was observed while testing PR #40258, which changes how the Node transport validates/handles request bodies. The error code currently assigned to "Unrecognized body type" appears to match other transient/retryable network errors, causing Storage's default retry policy to treat it as retryable.

    Suggested investigation steps:

    1. Locate where "Unrecognized body type" is thrown in the Node transport (likely in sdk/core/core-rest-pipeline or the ts-http-runtime Node HTTP sender introduced in [core] Support opt-in Expect: 100-continue in Node HTTP/1 transport #40258) and inspect the error code/classification assigned.
    2. Compare against the previously released core behavior to confirm it failed immediately (non-retryable) for the same scenario.
    3. Update the error classification so "Unrecognized body type" is explicitly marked non-retryable (e.g., a distinct error code or a flag checked by the retry policy), then verify Storage's retry policy no longer retries it.
    🏷️ Label Confidence
    • Category: Client — The issue concerns client-side transport and retry behavior in sdk/core, not a management-plane (@azure/arm-*) package.
    • Service: Azure.Core — The issue is rooted in @typespec/ts-http-runtime / core transport behavior (sdk/core), referenced alongside @azure/storage-blob only as the consumer exhibiting the symptom.
    • Confidence: High — The issue explicitly references sdk/core packages (@typespec/ts-http-runtime) and PR [core] Support opt-in Expect: 100-continue in Node HTTP/1 transport #40258 under sdk/core, with no ambiguity about the affected area.
    👥 Owner Routing
    • Matched CODEOWNERS entry: # ServiceLabel: %Azure.Core (line 77) — bottom-to-top scan found no multi-label entries combining "Azure.Core" with other predicted labels; this single-label entry matched first among Azure.Core entries.
    • AzureSdkOwners: @Azure/azure-sdk-for-js-core (team, not an individual assignable user)
    • ServiceOwners: none listed
    • Routing action: No individual assign_to_user call made since the listed owner is a team (not assignable as a single GitHub user); issue is already assigned to jeremymeng. Author is a repo MEMBER, so customer-reported/needs-team-attention labels were not applied per the author decision flow.
    • Scan notes: Lines 73 and 79 are # PRLabel: %Azure.Core entries (for PR-time labeling, not ServiceLabel issue routing) and were skipped; no other Azure.Core or multi-label combinations exist further down the file.

    Generated by Agentic Triage for #40387 · copilot · auto · 42.9 AIC · ⌖ 8.6 AIC · ⊞ 15.9K · ◷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Azure.CoreClientThis issue points to a problem in the data-plane of the library.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions