From 8c1ab9e7915e8f68b3c13636a331fe8b2df6b43e Mon Sep 17 00:00:00 2001 From: thinkmo Date: Mon, 22 Apr 2024 21:45:37 +0800 Subject: [PATCH] fix: Maximum call stack size exceeded Signed-off-by: thinkmo --- .changeset/fix-stackoverflow.md | 5 +++++ .../src/database/IncrementalIngestionDatabaseManager.ts | 8 +++----- .../src/engine/IncrementalIngestionEngine.ts | 4 +++- 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 .changeset/fix-stackoverflow.md diff --git a/.changeset/fix-stackoverflow.md b/.changeset/fix-stackoverflow.md new file mode 100644 index 0000000000..9047b8183a --- /dev/null +++ b/.changeset/fix-stackoverflow.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-backend-module-incremental-ingestion': patch +--- + +Fix plugin/incremental-ingestion 'Maximum call stack size exceeded' error when ingest large entities. diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/database/IncrementalIngestionDatabaseManager.ts b/plugins/catalog-backend-module-incremental-ingestion/src/database/IncrementalIngestionDatabaseManager.ts index e47954f47e..818a93fc6d 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/database/IncrementalIngestionDatabaseManager.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/database/IncrementalIngestionDatabaseManager.ts @@ -336,11 +336,9 @@ export class IncrementalIngestionDatabaseManager { .join('ingestions', 'ingestions.id', 'ingestion_marks.ingestion_id') .where('ingestions.id', previousIngestion.id); - removed.push( - ...stale.map(e => { - return { entityRef: e.ref }; - }), - ); + for (const entityRef of stale) { + removed.push({ entityRef: entityRef.ref }); + } } return { total, removed }; diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts b/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts index 0262dfd418..7a7b1d681d 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/engine/IncrementalIngestionEngine.ts @@ -322,7 +322,9 @@ export class IncrementalIngestionEngine } } if (doRemoval) { - removed.push(...result.removed); + for (const entityRef of result.removed) { + removed.push(entityRef); + } } }