From da1bf4e7bff0131b6d5fb79c8718b371e86ed5c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 18:33:28 +0000 Subject: [PATCH 1/8] Bump mysql2 from 3.23.4 to 3.24.2 Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.23.4 to 3.24.2. - [Release notes](https://github.com/sidorares/node-mysql2/releases) - [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md) - [Commits](https://github.com/sidorares/node-mysql2/compare/v3.23.4...v3.24.2) --- updated-dependencies: - dependency-name: mysql2 dependency-version: 3.24.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ef006c9b..634bca2a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8599,9 +8599,9 @@ "license": "ISC" }, "node_modules/mysql2": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.23.4.tgz", - "integrity": "sha512-J1Rgl8Oy5iw3mOBjKeTMQ3cJNjMYtJYavQVXShsMtSj9rKV8Q1+QaGKNJqDVQFcNINqYYp6Vxd90r69cCoBxBA==", + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.24.2.tgz", + "integrity": "sha512-l9kXeKGwd6VCbSjmpO/bLWb+YCYpbvE4whte8ec6InXebvCNyEEydyRCnRU+TSHNqRLJ8B+Tk1uWb+vMCJgJzA==", "license": "MIT", "dependencies": { "aws-ssl-profiles": "^1.1.2", From 13f3c12d3184dbc8a8a6442fa4afab2539b21647 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 1 Sep 2026 07:35:45 +0000 Subject: [PATCH 2/8] test mysql2 large parameters Co-authored-by: jainakanksha-msft <181211853+jainakanksha-msft@users.noreply.github.com> --- ChangeLog.md | 3 +++ tests/blob/sqlBlobMetadataStorePool.test.ts | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index b81bb1c6a..e2de2c1ea 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -4,6 +4,9 @@ ## Upcoming Release +General: + +- Updated lockfile-resolved `mysql2` from 3.23.4 to 3.24.2 to correct three-byte length-coded parameter encoding and improve SQL metadata-store performance; added SQL metadata coverage for large parameter persistence. ## 2026.08 Version 3.37.0 diff --git a/tests/blob/sqlBlobMetadataStorePool.test.ts b/tests/blob/sqlBlobMetadataStorePool.test.ts index be42fc5bf..cf95c8ffb 100644 --- a/tests/blob/sqlBlobMetadataStorePool.test.ts +++ b/tests/blob/sqlBlobMetadataStorePool.test.ts @@ -1,4 +1,5 @@ import * as assert from "assert"; +import { QueryTypes, Sequelize } from "sequelize"; import * as Models from "../../src/blob/generated/artifacts/models"; import Context from "../../src/blob/generated/Context"; @@ -146,4 +147,22 @@ describe("SqlBlobMetadataStore connection pool @sql", () => { await store.deleteContainer(createContext("conflict-4"), accountName, name); }); + + it("executes a three-byte length-coded parameter", async () => { + const value = "x".repeat(70 * 1024); + + const result = await getSequelize(store).query<{ value: string }>( + "SELECT $value AS value", + { + bind: { value }, + type: QueryTypes.SELECT + } + ); + + assert.strictEqual(result[0].value, value); + }); + + function getSequelize(store: SqlBlobMetadataStore): Sequelize { + return (store as any).sequelize; + } }); From 829d342c0fd142693fcf1bf9e3dd9a08f293a5f0 Mon Sep 17 00:00:00 2001 From: Akanksha Jain Date: Tue, 1 Sep 2026 13:16:56 +0530 Subject: [PATCH 3/8] Revise dependabot instructions for final response format --- .github/copilot-dependabot-instructions.md | 36 +++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/.github/copilot-dependabot-instructions.md b/.github/copilot-dependabot-instructions.md index 770f287f5..31a25e251 100644 --- a/.github/copilot-dependabot-instructions.md +++ b/.github/copilot-dependabot-instructions.md @@ -8,4 +8,38 @@ 6. **Comments** — review any existing PR comments and review threads, including resolved/hidden ones, and address anything actionable. 7. **Self-rate** — rate this work 1-10 against: correctness, test coverage, changelog accuracy, build/lint health, and comment resolution. 8. **Iterate** — if it's not a 10, keep improving until it is before finishing. -9. **Summary** — post a final comment explaining why this update matters, what the impact/risk is, and what could go wrong if it weren't applied, along with your self-rating and reasoning. +9. Your final response must use the following structure exactly. Do not provide a free-form paragraph summary. +## Impact analysis +- Package: +- Old version: +- New version: +- Change Impact: + +## Build/Conflict Issues +- Commands: +- Result: + +## Tests +- Added: +- Updated: +- Result: + +## Run the Suite +- Commands: +- Status: + +## Changelog +- Entry: +- Location: + +## Comments +- Reviewed: +- Actions: + +## Self-Rate +- Score: +- Reasoning: + +## Summary +- Why this matters: +- Risk of not taking change: From 2d66127d8f0371a3ce2168dbfba6b617ec95f647 Mon Sep 17 00:00:00 2001 From: Akanksha Jain Date: Tue, 1 Sep 2026 13:18:18 +0530 Subject: [PATCH 4/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- tests/blob/sqlBlobMetadataStorePool.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/blob/sqlBlobMetadataStorePool.test.ts b/tests/blob/sqlBlobMetadataStorePool.test.ts index cf95c8ffb..94297f54c 100644 --- a/tests/blob/sqlBlobMetadataStorePool.test.ts +++ b/tests/blob/sqlBlobMetadataStorePool.test.ts @@ -149,7 +149,7 @@ describe("SqlBlobMetadataStore connection pool @sql", () => { }); it("executes a three-byte length-coded parameter", async () => { - const value = "x".repeat(70 * 1024); + const value = "x".repeat(0x10000 + 1); const result = await getSequelize(store).query<{ value: string }>( "SELECT $value AS value", From 63c22219a25daea898afc1caf1b0bc0b09db888e Mon Sep 17 00:00:00 2001 From: Akanksha Jain Date: Tue, 1 Sep 2026 13:18:39 +0530 Subject: [PATCH 5/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- ChangeLog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index e375aad00..da0bf7bf4 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,7 +6,7 @@ General: -- Updated lockfile-resolved `mysql2` from 3.23.4 to 3.24.2 to correct three-byte length-coded parameter encoding and improve SQL metadata-store performance; added SQL metadata coverage for large parameter persistence. +- Updated lockfile-resolved `mysql2` from 3.23.4 to 3.24.2 to correct three-byte length-coded parameter encoding and improve SQL metadata-store performance; added SQL pool regression coverage for large bound parameters. - Updated the lockfile-resolved `eslint` version from 10.9.0 to 10.9.1 to fix a `no-loss-of-precision` false positive for trailing decimal points; added regression coverage for the corrected lint behavior. ## 2026.08 Version 3.37.0 From 093a7fdf1789821a6f43c62b66ce4532c6e415a3 Mon Sep 17 00:00:00 2001 From: Akanksha Jain Date: Tue, 1 Sep 2026 13:25:42 +0530 Subject: [PATCH 6/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/copilot-dependabot-instructions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/copilot-dependabot-instructions.md b/.github/copilot-dependabot-instructions.md index 31a25e251..46dd8528f 100644 --- a/.github/copilot-dependabot-instructions.md +++ b/.github/copilot-dependabot-instructions.md @@ -8,7 +8,8 @@ 6. **Comments** — review any existing PR comments and review threads, including resolved/hidden ones, and address anything actionable. 7. **Self-rate** — rate this work 1-10 against: correctness, test coverage, changelog accuracy, build/lint health, and comment resolution. 8. **Iterate** — if it's not a 10, keep improving until it is before finishing. -9. Your final response must use the following structure exactly. Do not provide a free-form paragraph summary. +9. **Summary** — your final response must use the following structure exactly (no free-form paragraph summary). + ## Impact analysis - Package: - Old version: From b217edb234a7e53b816cc7c6194fe6ec628d018f Mon Sep 17 00:00:00 2001 From: Akanksha Jain Date: Tue, 1 Sep 2026 13:26:05 +0530 Subject: [PATCH 7/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- tests/blob/sqlBlobMetadataStorePool.test.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/blob/sqlBlobMetadataStorePool.test.ts b/tests/blob/sqlBlobMetadataStorePool.test.ts index 94297f54c..4c9a3e34c 100644 --- a/tests/blob/sqlBlobMetadataStorePool.test.ts +++ b/tests/blob/sqlBlobMetadataStorePool.test.ts @@ -148,10 +148,16 @@ describe("SqlBlobMetadataStore connection pool @sql", () => { await store.deleteContainer(createContext("conflict-4"), accountName, name); }); - it("executes a three-byte length-coded parameter", async () => { + it("executes a three-byte length-coded parameter", async function () { + const sequelize = getSequelize(store); + const dialect = sequelize.getDialect(); + if (dialect !== "mysql" && dialect !== "mariadb") { + this.skip(); + } + const value = "x".repeat(0x10000 + 1); - const result = await getSequelize(store).query<{ value: string }>( + const result = await sequelize.query<{ value: string }>( "SELECT $value AS value", { bind: { value }, From b08a7eed88366ba8c163e663981bbc449e01fe0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:35:14 +0000 Subject: [PATCH 8/8] Retry transient blob cleanup resets Co-authored-by: jainakanksha-msft <181211853+jainakanksha-msft@users.noreply.github.com> --- tests/blob/blockblob.highlevel.test.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/blob/blockblob.highlevel.test.ts b/tests/blob/blockblob.highlevel.test.ts index 31f3e6016..bb7bcd049 100644 --- a/tests/blob/blockblob.highlevel.test.ts +++ b/tests/blob/blockblob.highlevel.test.ts @@ -17,7 +17,8 @@ import { getTestServerBaseURL, getUniqueName, readStreamToLocalFile, - rmRecursive + rmRecursive, + sleep } from "../testutils"; // Set true to enable debug log @@ -56,6 +57,22 @@ describe("BlockBlobHighlevel", () => { let tempFileLargeLength: number; const tempFolderPath = "temp"; const timeoutForLargeFileUploadingTest = 20 * 60 * 1000; + const cleanupRetryDelay = 100; + const cleanupRetryMaxTries = 3; + + async function deleteContainerWithTransientRetry(): Promise { + for (let i = 1; i <= cleanupRetryMaxTries; i++) { + try { + await containerClient.delete(); + return; + } catch (err: any) { + if (err.code !== "ECONNRESET" || i === cleanupRetryMaxTries) { + throw err; + } + await sleep(cleanupRetryDelay * i); + } + } + } beforeEach(async () => { containerName = getUniqueName("container"); @@ -67,7 +84,7 @@ describe("BlockBlobHighlevel", () => { }); afterEach(async function () { - await containerClient.delete(); + await deleteContainerWithTransientRetry(); }); before(async () => {