From a697b4ffe69773b5d455266b6bd42e6e81c733ce Mon Sep 17 00:00:00 2001 From: Pierre Millot Date: Thu, 6 Nov 2025 15:34:39 +0100 Subject: [PATCH 1/5] fix: always delete temporary index in replaceAllObjects --- .../src/methods/index/replaceAllObjects.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/client-search/src/methods/index/replaceAllObjects.ts b/packages/client-search/src/methods/index/replaceAllObjects.ts index 945cc7db8..ccb63794b 100644 --- a/packages/client-search/src/methods/index/replaceAllObjects.ts +++ b/packages/client-search/src/methods/index/replaceAllObjects.ts @@ -5,6 +5,7 @@ import { RequestOptions } from '@algolia/transporter'; import { ChunkedBatchResponse, ChunkOptions, + deleteIndex, IndexOperationResponse, ReplaceAllObjectsOptions, saveObjects, @@ -100,6 +101,15 @@ export const replaceAllObjects = (base: SearchIndex) => { objectIDs: saveObjectsResponse.objectIDs, taskIDs: [copyResponse.taskID, ...saveObjectsResponse.taskIDs, moveResponse.taskID], }; + }) + .catch(error => { + deleteIndex({ + appId: base.appId, + transporter: base.transporter, + indexName: temporaryIndexName, + })(); + + throw error; }); return createWaitablePromise(result, (_, waitRequestOptions) => { From 274251be7f480a9a92668e9d04a154046b26e618 Mon Sep 17 00:00:00 2001 From: Pierre Millot Date: Thu, 6 Nov 2025 15:52:40 +0100 Subject: [PATCH 2/5] wait --- packages/client-search/src/methods/index/replaceAllObjects.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client-search/src/methods/index/replaceAllObjects.ts b/packages/client-search/src/methods/index/replaceAllObjects.ts index ccb63794b..8864668d3 100644 --- a/packages/client-search/src/methods/index/replaceAllObjects.ts +++ b/packages/client-search/src/methods/index/replaceAllObjects.ts @@ -107,7 +107,7 @@ export const replaceAllObjects = (base: SearchIndex) => { appId: base.appId, transporter: base.transporter, indexName: temporaryIndexName, - })(); + })().wait(); throw error; }); From a854755fb3198013d90f995f9f9ae486c9832750 Mon Sep 17 00:00:00 2001 From: Pierre Millot Date: Thu, 6 Nov 2025 15:59:50 +0100 Subject: [PATCH 3/5] ignore error --- .../client-search/src/methods/index/replaceAllObjects.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/client-search/src/methods/index/replaceAllObjects.ts b/packages/client-search/src/methods/index/replaceAllObjects.ts index 8864668d3..61f3495d5 100644 --- a/packages/client-search/src/methods/index/replaceAllObjects.ts +++ b/packages/client-search/src/methods/index/replaceAllObjects.ts @@ -103,11 +103,16 @@ export const replaceAllObjects = (base: SearchIndex) => { }; }) .catch(error => { + // eslint-disable-next-line promise/no-nesting deleteIndex({ appId: base.appId, transporter: base.transporter, indexName: temporaryIndexName, - })().wait(); + })() + .wait() + .catch(() => { + // Ignore error + }); throw error; }); From d5a7937f2542e989e8d7cfabf6257cf362700de6 Mon Sep 17 00:00:00 2001 From: Pierre Millot Date: Thu, 6 Nov 2025 16:02:25 +0100 Subject: [PATCH 4/5] revert --- .../client-search/src/methods/index/replaceAllObjects.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/client-search/src/methods/index/replaceAllObjects.ts b/packages/client-search/src/methods/index/replaceAllObjects.ts index 61f3495d5..8864668d3 100644 --- a/packages/client-search/src/methods/index/replaceAllObjects.ts +++ b/packages/client-search/src/methods/index/replaceAllObjects.ts @@ -103,16 +103,11 @@ export const replaceAllObjects = (base: SearchIndex) => { }; }) .catch(error => { - // eslint-disable-next-line promise/no-nesting deleteIndex({ appId: base.appId, transporter: base.transporter, indexName: temporaryIndexName, - })() - .wait() - .catch(() => { - // Ignore error - }); + })().wait(); throw error; }); From fa0aac6fa59ed5e0d76143ccd7b568806025ade9 Mon Sep 17 00:00:00 2001 From: Pierre Millot Date: Thu, 6 Nov 2025 16:17:26 +0100 Subject: [PATCH 5/5] try something else --- .../src/methods/index/replaceAllObjects.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/client-search/src/methods/index/replaceAllObjects.ts b/packages/client-search/src/methods/index/replaceAllObjects.ts index 8864668d3..4433f2e32 100644 --- a/packages/client-search/src/methods/index/replaceAllObjects.ts +++ b/packages/client-search/src/methods/index/replaceAllObjects.ts @@ -103,13 +103,19 @@ export const replaceAllObjects = (base: SearchIndex) => { }; }) .catch(error => { - deleteIndex({ + // Clean up temporary index if there's an error + // eslint-disable-next-line promise/no-nesting + return deleteIndex({ appId: base.appId, transporter: base.transporter, indexName: temporaryIndexName, - })().wait(); - - throw error; + })() + .catch(() => { + // Ignore delete errors + }) + .then(() => { + throw error; + }); }); return createWaitablePromise(result, (_, waitRequestOptions) => {