From acc88a1c854c96f5b2bb02edd4136f8c4db2b065 Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Date: Wed, 11 Mar 2026 12:38:51 +0000 Subject: [PATCH 1/9] Allow forceInvokeStoreMulti --- src/invoke-store.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/invoke-store.ts b/src/invoke-store.ts index 8e3be43..ce7fde0 100644 --- a/src/invoke-store.ts +++ b/src/invoke-store.ts @@ -152,11 +152,11 @@ class InvokeStoreMulti extends InvokeStoreBase { export namespace InvokeStore { let instance: Promise | null = null; - export async function getInstanceAsync(): Promise { + export async function getInstanceAsync(forceInvokeStoreMulti: boolean | undefined): Promise { if (!instance) { // Lock synchronously on first invoke by immediately assigning the promise instance = (async () => { - const isMulti = "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; + const isMulti = forceInvokeStoreMulti === true || "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; const newInstance = isMulti ? await InvokeStoreMulti.create() : new InvokeStoreSingle(); From e1c965a56cfbaed31a0ee6eb6c26dfec7b9122f1 Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Date: Wed, 11 Mar 2026 12:47:26 +0000 Subject: [PATCH 2/9] Add default value --- src/invoke-store.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/invoke-store.ts b/src/invoke-store.ts index ce7fde0..6a6d1ff 100644 --- a/src/invoke-store.ts +++ b/src/invoke-store.ts @@ -152,7 +152,7 @@ class InvokeStoreMulti extends InvokeStoreBase { export namespace InvokeStore { let instance: Promise | null = null; - export async function getInstanceAsync(forceInvokeStoreMulti: boolean | undefined): Promise { + export async function getInstanceAsync(forceInvokeStoreMulti: boolean | undefined = undefined): Promise { if (!instance) { // Lock synchronously on first invoke by immediately assigning the promise instance = (async () => { From aa87d1b4fbb9bc101901293984a85f7ebb110655 Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Date: Wed, 11 Mar 2026 12:52:22 +0000 Subject: [PATCH 3/9] Version Bump to 0.2.4 --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 240b544..6093fd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @aws/lambda-invoke-store +## 0.2.4 + +### Patch Changes + +- Added optional boolean argumanet to force the use of InvokeStoreMulti(AsyncLocalStorage). ([PR #34](https://github.com/awslabs/aws-lambda-invoke-store/pull/34)) + ## 0.2.3 ### Patch Changes diff --git a/package.json b/package.json index eaef4c2..30d6d5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lambda-invoke-store", - "version": "0.2.3", + "version": "0.2.4", "description": "Invoke scoped data storage for AWS Lambda Node.js Runtime Environment", "homepage": "https://github.com/awslabs/aws-lambda-invoke-store", "main": "./dist-cjs/invoke-store.js", From c539ded77237f42c6f23aa4831cf78885f45ec59 Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Elsaeed <33024315+M-Elsaeed@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:45:13 +0000 Subject: [PATCH 4/9] Update src/invoke-store.ts Co-authored-by: George Fu --- src/invoke-store.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/invoke-store.ts b/src/invoke-store.ts index 6a6d1ff..572ea13 100644 --- a/src/invoke-store.ts +++ b/src/invoke-store.ts @@ -152,7 +152,7 @@ class InvokeStoreMulti extends InvokeStoreBase { export namespace InvokeStore { let instance: Promise | null = null; - export async function getInstanceAsync(forceInvokeStoreMulti: boolean | undefined = undefined): Promise { + export async function getInstanceAsync(forceInvokeStoreMulti?: boolean): Promise { if (!instance) { // Lock synchronously on first invoke by immediately assigning the promise instance = (async () => { From bf21220babc0bb7ea55b6845559bd1b1e55d9990 Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Elsaeed <33024315+M-Elsaeed@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:55:44 +0000 Subject: [PATCH 5/9] Update package.json Co-authored-by: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 30d6d5e..eaef4c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lambda-invoke-store", - "version": "0.2.4", + "version": "0.2.3", "description": "Invoke scoped data storage for AWS Lambda Node.js Runtime Environment", "homepage": "https://github.com/awslabs/aws-lambda-invoke-store", "main": "./dist-cjs/invoke-store.js", From 8e02c13d59221f32ecf6d9f3df58a8302df2276c Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Elsaeed <33024315+M-Elsaeed@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:55:52 +0000 Subject: [PATCH 6/9] Update CHANGELOG.md Co-authored-by: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> --- CHANGELOG.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6093fd7..240b544 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,5 @@ # @aws/lambda-invoke-store -## 0.2.4 - -### Patch Changes - -- Added optional boolean argumanet to force the use of InvokeStoreMulti(AsyncLocalStorage). ([PR #34](https://github.com/awslabs/aws-lambda-invoke-store/pull/34)) - ## 0.2.3 ### Patch Changes From 391ad1d69f05e62a584555cf5dcc750cd16781cb Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Elsaeed <33024315+M-Elsaeed@users.noreply.github.com> Date: Thu, 12 Mar 2026 11:44:47 +0000 Subject: [PATCH 7/9] Update .changeset for InvokeStoreMulti changes Added optional boolean argument to allow forced use of InvokeStoreMulti(AsyncLocalStorage). --- .changeset/fair-dolls-smash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fair-dolls-smash.md diff --git a/.changeset/fair-dolls-smash.md b/.changeset/fair-dolls-smash.md new file mode 100644 index 0000000..d37cbd3 --- /dev/null +++ b/.changeset/fair-dolls-smash.md @@ -0,0 +1,5 @@ +--- +"@aws/lambda-invoke-store": patch +--- + +Added optional boolean argumanet to allow forced use of InvokeStoreMulti(AsyncLocalStorage). From a2373bcfe9e45ae28b0d404e6011c0803c1416ff Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 12 Mar 2026 08:27:08 -0700 Subject: [PATCH 8/9] chore: update changeset --- .changeset/fair-dolls-smash.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/fair-dolls-smash.md b/.changeset/fair-dolls-smash.md index d37cbd3..72f6d18 100644 --- a/.changeset/fair-dolls-smash.md +++ b/.changeset/fair-dolls-smash.md @@ -2,4 +2,4 @@ "@aws/lambda-invoke-store": patch --- -Added optional boolean argumanet to allow forced use of InvokeStoreMulti(AsyncLocalStorage). +Added an optional boolean argument that allows forcing the use of InvokeStoreMulti with AsyncLocalStorage. From 57c8a5cc5eaeacd4e7c104dc2a90ad8a725b72a4 Mon Sep 17 00:00:00 2001 From: Mohammed Ehab Date: Thu, 12 Mar 2026 15:34:16 +0000 Subject: [PATCH 9/9] Add Unit Test --- src/invoke-store.force-multi.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/invoke-store.force-multi.spec.ts diff --git a/src/invoke-store.force-multi.spec.ts b/src/invoke-store.force-multi.spec.ts new file mode 100644 index 0000000..1c01e01 --- /dev/null +++ b/src/invoke-store.force-multi.spec.ts @@ -0,0 +1,9 @@ +import { describe, it, expect } from "vitest"; +import { InvokeStore } from "./invoke-store.js"; + +describe("forceInvokeStoreMulti", () => { + it("should create InvokeStoreMulti when forceInvokeStoreMulti is true, without env var", async () => { + const store = await InvokeStore.getInstanceAsync(true); + expect(store.constructor.name).toBe("InvokeStoreMulti"); + }); +});