Skip to content

perf: reduce HashMap/collection allocation overhead in gateway path#45

Open
xinlian12 wants to merge 162 commits into
mainfrom
perf/hashmap-collection-allocation
Open

perf: reduce HashMap/collection allocation overhead in gateway path#45
xinlian12 wants to merge 162 commits into
mainfrom
perf/hashmap-collection-allocation

Conversation

@xinlian12
Copy link
Copy Markdown
Owner

Eliminate per-response intermediate HashMap allocation by adding a new StoreResponse constructor that accepts HttpHeaders directly. Header names and values are populated into String[] arrays without materializing an intermediate Map. The JsonNodeStorePayload is updated to accept header arrays and only builds a Map lazily on error paths (extremely rare).

Pre-size HashMaps throughout the hot path to avoid resize/rehash:

  • HttpHeaders request construction: sized to defaultHeaders + request headers
  • StoreResponse.replicaStatusList: pre-sized to 4
  • StoreResponse.withRemappedStatusCode: pre-sized to header count
  • RxDocumentServiceRequest fallback maps: pre-sized to 32

Fix HttpUtils.asMap() double-allocation by iterating HttpHeaders directly instead of calling toMap() which creates an intermediate HashMap.

Copilot AI and others added 11 commits March 31, 2026 09:22
…zure#48610)

Agent-Logs-Url: https://github.com/Azure/azure-sdk-for-java/sessions/5fb4ff6b-c53e-43b7-a192-b5c2bbcd4bfb

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: praveenkuttappan <55455725+praveenkuttappan@users.noreply.github.com>
* Fix usage of deprecated telemetry tags

* Revert changes outside azure-core-tracing-opentelemetry
* Refactor Refresh

* review fixes

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update StateHolderTest.java

* Update AppConfigurationRefreshUtil.java

* Update AppConfigurationRefreshUtil.java

* Update sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolder.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update AzureAppConfigBootstrapRegistrar.java

* Update AppConfigurationRefreshUtilTest.java

* Update ConnectionManager.java

* Update AppConfigurationRefreshUtilTest.java

* fixing after merge

* Update AppConfigurationRefreshUtilTest.java

* fixing tests

* fixing merge issue

* Update RecurrenceEvaluator.java

* Update RecurrenceEvaluator.java

* better fix

* new fix

* Update AppConfigurationWatchAutoConfiguration.java

* Update AppConfigurationPullRefresh.java

* Update AppConfigurationPullRefresh.java

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…8465)

* Fail fast when no packages selected for manual release build

When manually triggering a release pipeline, if no release_* parameters
are checked, the pipeline would run through expensive build and signing
steps before eventually failing at Create-APIReview.ps1. This is common
since 112 of 156 service CI files have all release parameters defaulting
to false.

Add a compile-time validation step as the first step of the Build job
that immediately fails with a clear error message when all three
conditions are met: internal project, manual trigger, and no release
artifacts selected. The step is not injected for PR, CI push, or
scheduled builds.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Updated output msg

* Log vso task issue

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
* inner loop, add update-meta-data script

* remove ci.yaml updates

* Add CI.yml provisioning and update support

Adds CI.yml update as Step 4 in the metadata update script, ported
from the Python implementation in eng/automation/utils.py.

Supported cases:
- Create new ci.yml from template for brand-new services
- Add artifact entry to existing ci.yml (with/without release params)
- Rename ci.yml to ci.data.yml when SDKType=data and create new ci.yml
- Skip when module already exists (idempotent)
- Management-plane packages get default: false for release param
- Data-plane packages get default: true for release param

Fixes Azure/azure-sdk-tools#13808

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* resolve comments

* Fail metadata update for unsupported SDK types

Add groupId validation to reject unsupported SDK types (e.g., com.azure.spring).
Only com.azure and com.azure.resourcemanager are supported. Uses LogError
with the package path for clear diagnostics before exiting.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Eliminate per-response intermediate HashMap allocation by adding a new
StoreResponse constructor that accepts HttpHeaders directly. Header names
and values are populated into String[] arrays without materializing an
intermediate Map. The JsonNodeStorePayload is updated to accept header
arrays and only builds a Map lazily on error paths (extremely rare).

Pre-size HashMaps throughout the hot path to avoid resize/rehash:
- HttpHeaders request construction: sized to defaultHeaders + request headers
- StoreResponse.replicaStatusList: pre-sized to 4
- StoreResponse.withRemappedStatusCode: pre-sized to header count
- RxDocumentServiceRequest fallback maps: pre-sized to 32

Fix HttpUtils.asMap() double-allocation by iterating HttpHeaders directly
instead of calling toMap() which creates an intermediate HashMap.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…K Generation - Java-6084367 (Azure#48644)

* Configurations:  'specification/azurestackhci/resource-manager/Microsoft.AzureStackHCI/StackHCI/tspconfig.yaml', API Version: 2026-02-01, SDK Release Type: stable, and CommitSHA: 'aa591176e14ed29f96ebf1e3899e4356df7f13dd' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6084367 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Configurations:  'specification/azurestackhci/resource-manager/Microsoft.AzureStackHCI/StackHCI/tspconfig.yaml', API Version: 2026-02-01, SDK Release Type: stable, and CommitSHA: '90d424dc756608a8788ce35b8188c7e82c684f4c' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6086791 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Configurations:  'specification/azurestackhci/resource-manager/Microsoft.AzureStackHCI/StackHCI/tspconfig.yaml', API Version: 2026-02-01, SDK Release Type: stable, and CommitSHA: 'dcaa77fcd61105315164a986dd185219331a76a5' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6090571 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.
* Regenerate Redis SDK from TypeSpec, add revapi suppressions

- Regenerated SDK code from TypeSpec
- Added module-info.java opens for implementation.models
- Added revapi suppressions for:
  - Read-only model constructors made private
  - Read-only model setters removed
  - OperationStatusResult setters visibility reduced
  - Pageable ListResult classes moved to implementation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Regenerate Redis SDK with alternateType fix for percentComplete

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Regenerate Redis SDK - all revapi checks pass

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Restore changelog from main, update tsp-location.yaml

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update tsp-location.yaml to specs PR commit

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* commit on main

* record

* fix tsp-location

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

⚠️ Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • releaseassets.githubusercontent.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "releaseassets.githubusercontent.com"

See Network Configuration for more information.

Note

🔒 Integrity filtering filtered 1 item

Integrity filtering activated and filtered the following item during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

  • pr:#45 (pull_request_read: Resource 'pr:#45' has lower integrity than agent requires. Agent would need to drop integrity tags [unapproved:all approved:all] to trust this resource.)

Generated by sdkReviewAgent for issue #45

}

this.status = status;
replicaStatusList = new HashMap<>(4);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Recommendation · Correctness: HashMap<>(4) undersizes for standard replica factor

new HashMap<>(4) gives an internal threshold of 3 (capacity × 0.75). In a standard 4-replica cluster every error path that adds one entry per replica will trigger a resize on the 4th insertion — the opposite of the stated pre-sizing goal.

Use new HashMap<>(6) (threshold 4) to fit 4 replicas without rehashing:

replicaStatusList = new HashMap<>(6);

Same applies to the identical lines 72 and 163 in this file.


⚠️ AI-generated review — may be incorrect. Agree? → resolve the conversation. Disagree? → reply with your reasoning.

byte[] bytes = new byte[readableBytes];
try {
bufferStream.read(bytes);
return Utils.getSimpleObjectMapper().readTree(bytes);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Recommendation · Code Quality: Full happy-path duplication between fromJsonWithArrayHeaders and fromJson

Lines 96–99 are an exact copy of the happy path in fromJson (lines 60–63). The only real difference is how responseHeaders is obtained in the catch block (lazily built from arrays vs. passed directly). If the parsing logic ever changes (e.g., streaming parse, byte-count validation, or a new encoding branch), the two methods will silently diverge.

Consider extracting the shared parsing and error-handling into a single method that accepts a Supplier(Map(String,String)) for the lazy headers:

private static JsonNode parseJson(
        ByteBufInputStream bufferStream,
        int readableBytes,
        Supplier(Map(String, String)) headersSupplier) {
    byte[] bytes = new byte[readableBytes];
    try {
        bufferStream.read(bytes);
        return Utils.getSimpleObjectMapper().readTree(bytes);
    } catch (IOException e) {
        Map(String, String) responseHeaders = headersSupplier.get();
        if (fallbackCharsetDecoder != null) { ... }
        ...
    }
}

Then fromJson passes () -> responseHeaders (already materialized) and the new array-based path passes () -> buildHeaderMap(headerNames, headerValues) (lazy). This eliminates the duplication while preserving the allocation benefit.


⚠️ AI-generated review — may be incorrect. Agree? → resolve the conversation. Disagree? → reply with your reasoning.


private HttpHeaders getHttpRequestHeaders(Map<String, String> headers) {
HttpHeaders httpHeaders = new HttpHeaders(this.defaultHeaders.size());
HttpHeaders httpHeaders = new HttpHeaders(this.defaultHeaders.size() + (headers != null ? headers.size() : 0));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Recommendation · Correctness: Inconsistent null guard — pre-sizing is null-safe, but containsKey is not

Line 346 adds (headers != null ? headers.size() : 0), implying null is a valid argument. But line 349 calls headers.containsKey(...) unconditionally, which would throw NullPointerException if headers is ever null.

The RxDocumentServiceRequest changes in this PR (new HashMap<>(32) as a fallback) ensure getHeaders() is non-null in the only call site today — but the method signature accepts Map(String, String) so future callers could pass null.

Option A — make the contract explicit (callers guarantee non-null):

// Remove the ternary; always use headers.size()
HttpHeaders httpHeaders = new HttpHeaders(this.defaultHeaders.size() + headers.size());

Option B — make the method defensively correct for null:

if (!headers.containsKey(entry.getKey())) {

if (headers == null || !headers.containsKey(entry.getKey())) {

Option A is preferable given that getHeaders() is now always non-null, and it avoids the misleading implication that null is an accepted input.


⚠️ AI-generated review — may be incorrect. Agree? → resolve the conversation. Disagree? → reply with your reasoning.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

⚠️ Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • releaseassets.githubusercontent.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "releaseassets.githubusercontent.com"

See Network Configuration for more information.

Note

🔒 Integrity filtering filtered 1 item

Integrity filtering activated and filtered the following item during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

  • pr:#45 (pull_request_read: Resource 'pr:#45' has lower integrity than agent requires. Agent would need to drop integrity tags [unapproved:all approved:all] to trust this resource.)

Generated by sdkReviewAgent for issue #45

responseHeaderValues = new String[headerCount];
this.endpoint = endpoint != null ? endpoint : "";

httpHeaders.populateLowerCaseHeaders(responseHeaderNames, responseHeaderValues);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Recommendation · Test Coverage: New hot-path constructor and helper have no tests

Three newly added code paths have zero test coverage:

  1. StoreResponse(endpoint, status, HttpHeaders, …) — the new hot-path constructor
  2. HttpHeaders.populateLowerCaseHeaders(names, values) — called right here
  3. JsonNodeStorePayload(bufferStream, readableBytes, String[], String[]) error path (where buildHeaderMap is lazily invoked)

What to add:

  • A unit test asserting that StoreResponse(HttpHeaders) and StoreResponse(Map) produce identical responseHeaderNames/responseHeaderValues arrays (including lowercase normalization and the OWNER_FULL_NAME URL-decode).
  • A unit test for populateLowerCaseHeaders verifying that names in the output array are lowercase even when headers were set with mixed-case names.
  • An error-path test for JsonNodeStorePayload(…, String[], String[]) that injects invalid JSON and asserts the lazily-built header map is correct inside the thrown exception.

Without these, the main perf optimization (the new constructor) can silently regress or diverge from the Map-based constructor if HttpHeaders internals change.


⚠️ AI-generated review — may be incorrect. Agree? → resolve the conversation. Disagree? → reply with your reasoning.

*/
public HttpHeaders() {
this.headers = new HashMap<>();
this.headers = new HashMap<>(16);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💬 Observation · Code Quality: HashMap<>(16) is identical to HashMap<>()

HashMap's no-arg constructor already uses a default initial capacity of 16 (DEFAULT_INITIAL_CAPACITY = 1 << 4). Changing new HashMap<>() to new HashMap<>(16) has no runtime effect.

If the intent is to document the allocation size for clarity, a comment is clearer. If the intent is an actual optimisation, it needs a different initial capacity (e.g., new HashMap<>(32) for headers-heavy flows). As written this change adds visual noise without benefit.


⚠️ AI-generated review — may be incorrect. Agree? → resolve the conversation. Disagree? → reply with your reasoning.

Annie Liang and others added 16 commits April 1, 2026 10:14
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Removing boxed types for nregion property check

* updating javadoc and adding changelog
…-SDK Generation - Java-6083044 (Azure#48641)

* Configurations:  'specification/containerservice/resource-manager/Microsoft.ContainerService/aks/tspconfig.yaml', API Version: 2026-01-02-preview, SDK Release Type: beta, and CommitSHA: 'f43cd0ba56f868747a1e85155becbf6d3849f725' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6083044 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* revapi suppress

* ut, skip a field that only exists in preview

* fix lint

* Configurations:  'specification/containerservice/resource-manager/Microsoft.ContainerService/aks/tspconfig.yaml', API Version: 2026-01-02-preview, SDK Release Type: beta, and CommitSHA: '94db7d273945296435e15719fd0ade793fdcf7d2' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6085712 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Configurations:  'specification/containerservice/resource-manager/Microsoft.ContainerService/aks/tspconfig.yaml', API Version: 2026-01-02-preview, SDK Release Type: beta, and CommitSHA: 'b684aff3319ffa5784a8b8d19d6af5adf168a4bb' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6085899 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

---------

Co-authored-by: Weidong Xu <weidxu@microsoft.com>
…on - Java-6092967 (Azure#48660)

* Configurations:  'specification/loadtestservice/resource-manager/Microsoft.LoadTestService/playwright/tspconfig.yaml', API Version: 2026-02-01-preview, SDK Release Type: beta, and CommitSHA: 'dfc0b2356c41c538250f3309f1a35f4cb1bf4e34' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6092967 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Update release date for 1.1.0-beta.1

Updated release date for version 1.1.0-beta.1 in CHANGELOG.

---------

Co-authored-by: Kashish Gupta <90824921+kashish2508@users.noreply.github.com>
…er/Microsoft.KubernetesConfiguration/extensions/tspconfig.yaml', API Version: 2025-03-01, SDK Release Type: stable, and CommitSHA: '0758803aaaacc14ce831053cf0eb592e09e14f93' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6067536 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. (Azure#48593)

Co-authored-by: prasannajsns <33145176+prasannajsns@users.noreply.github.com>
…lity tests. (Azure#48679)

This commit is created by GitHub Action: https://github.com/Azure/spring-cloud-azure-tools/actions/runs/23928117451

Co-authored-by: github-actions <github-actions@github.com>
* Clean up azure-identity README

- Fix typo: 'used by to' -> 'used to'

- Remove redundant DefaultAzureCredential and ManagedIdentityCredential code examples

- Update credential chain and managed identity reference links

- Improve Markdown table formatting

- Fix indentation and whitespace issues

* Update sdk/identity/azure-identity/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
)

* Allow azure-sdk PRs to bypass CODEOWNERS section check and rename CodeownersChanged to ShouldCheckCodeownersEdits

Agent-Logs-Url: https://github.com/Azure/azure-sdk-tools/sessions/6acbd501-14e8-4108-9213-c49d035fb815

Co-authored-by: danieljurek <2158838+danieljurek@users.noreply.github.com>

* Use gh pr view to detect PR author instead of Build.RequestedFor

Agent-Logs-Url: https://github.com/Azure/azure-sdk-tools/sessions/e2fb79aa-7ed3-45dd-a0ba-3ebb24b10e4b

Co-authored-by: danieljurek <2158838+danieljurek@users.noreply.github.com>

* Reorder logic: check CODEOWNERS changed before gh API call, remove stderr capture

Agent-Logs-Url: https://github.com/Azure/azure-sdk-tools/sessions/747d7c1f-ba14-4781-83e1-6b80bf475318

Co-authored-by: danieljurek <2158838+danieljurek@users.noreply.github.com>

* Replace gh CLI with Invoke-RestMethod for PR author detection

Agent-Logs-Url: https://github.com/Azure/azure-sdk-tools/sessions/56bb56b5-f097-48df-90ab-de347a28634f

Co-authored-by: danieljurek <2158838+danieljurek@users.noreply.github.com>

* Add retry parameters to Invoke-RestMethod for PR author lookup

Agent-Logs-Url: https://github.com/Azure/azure-sdk-tools/sessions/d8f97723-9352-41c9-8005-356bde3313c4

Co-authored-by: danieljurek <2158838+danieljurek@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: danieljurek <2158838+danieljurek@users.noreply.github.com>
azure-sdk and others added 30 commits April 20, 2026 15:58
…zure#48839)

* add usage into invoice sample

* revise per copilot comments
… Generation - Java-6087535 (Azure#48650)

* Configurations:  'specification/computelimit/resource-manager/Microsoft.ComputeLimit/ComputeLimit/tspconfig.yaml', API Version: 2026-03-20, SDK Release Type: stable, and CommitSHA: 'a83147fe12aece4ded0bd96be212e5242e087cb9' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6087535 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Configurations:  'specification/computelimit/resource-manager/Microsoft.ComputeLimit/ComputeLimit/tspconfig.yaml', API Version: 2026-03-20, SDK Release Type: stable, and CommitSHA: 'cca5b9fb049544c3bd14869f1642d4cc0187ef00' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6087783 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Configurations:  'specification/computelimit/resource-manager/Microsoft.ComputeLimit/ComputeLimit/tspconfig.yaml', API Version: 2026-03-20, SDK Release Type: stable, and CommitSHA: 'd12a591062fc42adbad8c0105094f3de018a71b7' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6113665 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

---------

Co-authored-by: Hebin Huang <hebin_huang@hotmail.com>
…er/Microsoft.KubernetesConfiguration/extensions/tspconfig.yaml', API Version: 2025-03-01, SDK Release Type: stable, and CommitSHA: '41aa2e9f20cb7d28653078638d143bb0272658a3' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6116006 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. (Azure#48704)

Co-authored-by: weidongxu-microsoft <53292327+weidongxu-microsoft@users.noreply.github.com>
…orizonDb/HorizonDb/tspconfig.yaml', API Version: 2026-01-20-preview, SDK Release Type: beta, and CommitSHA: 'f6e1fbd6268be7712bf96a516ba846f7d42e2baa' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6080421 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. (Azure#48632)

Co-authored-by: Weidong Xu <weidxu@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…delay paths (Azure#48880)

When fault injection simulates a response delay, the real HTTP response body
was discarded without draining its ByteBuf content. Under HTTP/2, this causes
ByteBuf leaks that accumulate on the long-lived parent channel.

Two leak paths fixed:
- delay >= timeout: doOnNext drains body before delayElement buffers it
- delay < timeout: doOnDiscard releases body if downstream cancels during delay

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1. HttpHeaders.populateLowerCaseHeaders: Add argument validation - reject
   null arrays and enforce minimum length (IllegalArgumentException).

2. StoreResponse OWNER_FULL_NAME comparison: Use equalsIgnoreCase() for
   defensive case-insensitive matching against the lowercase header key.

3. HttpUtils.mapCapacityForSize: Guard against overflow for large
   expectedSize values; clamp to Integer.MAX_VALUE and handle <= 0 input.

4. HttpHeadersTests: Use toLowerCase(Locale.ROOT) for locale-stable
   assertions.

5. StoreResponse: Extract magic number 6 into named constant
   REPLICA_STATUS_MAP_INITIAL_CAPACITY with documenting comment.

6. StoreResponseTest: Add httpHeadersConstructorDecodesOwnerFullName test
   verifying URL-encoded OWNER_FULL_NAME header is decoded via the
   HttpHeaders constructor path.
…bled (Azure#48888)

* Add regression test for IMDS-disabled ClientTelemetry init

* Fix ClientTelemetry initialization when IMDS access is disabled

* Update CHANGELOG.md

* Update ClientConfigDiagnosticsTest.java
* Add vnext emulator stages back to public CI pipeline

Remove the internal-only guard ({{ if eq(variables['System.TeamProject'], 'internal') }})
from the VNext emulator test stages in cosmos-sdk-client.yml so they run
on both public and internal CI pipelines.

The Skip.VnextEmulator variable condition is preserved for opt-out.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Adding dummy change to trigger CI

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…breaking behavior change. (Azure#48892)

Co-authored-by: Daniel Jurek <djurek@microsoft.com>
* fix bot comment on apiview

* Fix lint: drop @ServiceMethod on convenience transcribeWithResponse(TranscriptionOptions) overload

The Checkstyle ServiceClientCheck requires sync methods annotated with @ServiceMethod to take Context/RequestOptions/RequestContext. The convenience overload only takes TranscriptionOptions, so the annotation is removed. Also drops unused ClientLogger imports/fields and fixes javadoc rendering in the customization.

* update changelog
Bumps [@azure-tools/typespec-client-generator-cli](https://github.com/Azure/azure-sdk-tools) from 0.32.0 to 0.32.1.
- [Release notes](https://github.com/Azure/azure-sdk-tools/releases)
- [Commits](https://github.com/Azure/azure-sdk-tools/commits)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…re#48858)

* Enhance HttpResponse to include new method to return InputStream

* changelog

* update unit tests and change package for flux inputstream

* spotless formatting
…zure#48897)

* add javadoc required

* update tspconfig with latest commit

* Regenerate ProfanityFilterMode for updated spec pin
* Remove cosmos filter from pullrequest build definition

Remove sdk/cosmos/ exclusion from pullrequest.yml trigger paths
and ExcludePaths parameter so cosmos changes go through the standard
PR validation pipeline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* pullrequest pipeline excludes cosmos, cosmos still triggers properly

* remove the triggering file that I was using to test

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix broken link

* fix link verification error
…ation - Java-6132589 (Azure#48754)

* Configurations:  'specification/iotoperations/IoTOperations.Management/tspconfig.yaml', API Version: 2026-03-01, SDK Release Type: stable, and CommitSHA: '0238251ff4a7b2404ec0110599b845b15d7fdd7f' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6132589 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Update pom.xml

---------

Co-authored-by: Weidong Xu <weidxu@microsoft.com>
Co-authored-by: Byron Jin <146121964+byronjinmsft@users.noreply.github.com>
…- Java-6183423 (Azure#48883)

* Configurations:  'specification/compute/resource-manager/Microsoft.Compute/Compute/tspconfig.yaml', API Version: 2025-11-01, SDK Release Type: stable, and CommitSHA: '1e6111d12c709c3395fb8546e311b6c67fd87efc' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6183423 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Weidong Xu <weidxu@microsoft.com>
* updates to patch sparse checkout to account for spring and cosmos while they are still excluded from the build list

* Update eng/scripts/Generate-ServiceDirectories-From-Project-List.ps1

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…oft.DataProtection/DataProtection/tspconfig.yaml', API Version: 2026_03_01, SDK Release Type: beta, and CommitSHA: '32ab0a3f798fed9517cb4026e47144251ea9331e' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6095332 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. (Azure#48666)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.