From 0c74ffcec1e897f275a97856be9761aa98808603 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 20 Nov 2025 21:29:25 +0000 Subject: [PATCH 1/3] Initial plan From 7befb9963964244e2b7460df9bac7c8bab1dd8ae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 20 Nov 2025 21:44:08 +0000 Subject: [PATCH 2/3] Pass user-provided abortSignal to buildRunningOperation for proper abort handling Co-authored-by: glharper <64209257+glharper@users.noreply.github.com> --- .../src/api/memoryStores/memoryStoreUpdatePoller.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts b/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts index d46f230ca6c8..f30ce05482d2 100644 --- a/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts +++ b/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts @@ -135,6 +135,7 @@ function buildRunningOperation( client: Client, expectedStatuses: string[], getInitialResponse?: () => PromiseLike, + options?: CreateMemoryStoreUpdatePollerOptions, ): RunningOperation { const pollAbortController = new AbortController(); return { @@ -146,13 +147,19 @@ function buildRunningOperation( return toOperationResponse(initialResponse, expectedStatuses); }, sendPollRequest: async (path: string, pollOptions?: { abortSignal?: AbortSignalLike }) => { + // The poll request would both listen to the user provided abort signal and the poller's own abort signal function abortListener(): void { pollAbortController.abort(); } const abortSignal = pollAbortController.signal; - if (pollOptions?.abortSignal?.aborted) { + if (options?.abortSignal?.aborted) { + pollAbortController.abort(); + } else if (pollOptions?.abortSignal?.aborted) { pollAbortController.abort(); } else if (!abortSignal.aborted) { + options?.abortSignal?.addEventListener("abort", abortListener, { + once: true, + }); pollOptions?.abortSignal?.addEventListener("abort", abortListener, { once: true, }); @@ -162,6 +169,7 @@ function buildRunningOperation( try { response = (await client.pathUnchecked(path).get({ abortSignal })) as PathUncheckedResponse; } finally { + options?.abortSignal?.removeEventListener("abort", abortListener); pollOptions?.abortSignal?.removeEventListener("abort", abortListener); } @@ -191,6 +199,7 @@ export function createMemoryStoreUpdatePoller( return initialResponse; } : undefined, + options, ), { intervalInMs: options?.updateIntervalInMs, From a6b60e1f11062e34c592a722874a579b1c30f0b0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 20 Nov 2025 21:45:10 +0000 Subject: [PATCH 3/3] Fix grammar in comment: 'would both' to 'will both' Co-authored-by: glharper <64209257+glharper@users.noreply.github.com> --- .../ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts b/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts index f30ce05482d2..b989c44e63f5 100644 --- a/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts +++ b/sdk/ai/ai-projects/src/api/memoryStores/memoryStoreUpdatePoller.ts @@ -147,7 +147,7 @@ function buildRunningOperation( return toOperationResponse(initialResponse, expectedStatuses); }, sendPollRequest: async (path: string, pollOptions?: { abortSignal?: AbortSignalLike }) => { - // The poll request would both listen to the user provided abort signal and the poller's own abort signal + // The poll request will both listen to the user provided abort signal and the poller's own abort signal function abortListener(): void { pollAbortController.abort(); }