From b611fd02a40f2b1a1ede3ebe9b75e2fcfad79fed Mon Sep 17 00:00:00 2001 From: Beth Griggs Date: Tue, 16 Apr 2024 18:10:05 +0100 Subject: [PATCH] fix: handle lost+found directory in plugin scanner Signed-off-by: Beth Griggs --- .changeset/smart-avocados-invent.md | 5 +++++ .../src/scanner/plugin-scanner.test.ts | 18 ++++++++++++++++++ .../src/scanner/plugin-scanner.ts | 5 +++++ 3 files changed, 28 insertions(+) create mode 100644 .changeset/smart-avocados-invent.md diff --git a/.changeset/smart-avocados-invent.md b/.changeset/smart-avocados-invent.md new file mode 100644 index 0000000000..c71b6fef37 --- /dev/null +++ b/.changeset/smart-avocados-invent.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-dynamic-feature-service': patch +--- + +Updates the `scanRoot` method in the `PluginScanner` class to specifically ignore the `lost+found` directory, which is a system-generated directory used for file recovery on Unix-like systems. Skipping this directory avoids unnecessary errors. diff --git a/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.test.ts b/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.test.ts index 1abd7c234c..3086f2c16e 100644 --- a/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.test.ts +++ b/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.test.ts @@ -636,6 +636,24 @@ Please add '${mockDir.resolve( ], }, }, + { + name: 'lost+found directory should be ignored', + fileSystem: { + backstageRoot: { + 'dist-dynamic': { + 'lost+found': {}, + }, + }, + }, + expectedPluginPackages: [], + expectedLogs: { + debugs: [ + { + message: `skipping 'lost+found' system directory`, + }, + ], + }, + }, ])('$name', async (tc: TestCase): Promise => { const logger = new MockedLogger(); const backstageRoot = mockDir.resolve('backstageRoot'); diff --git a/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.ts b/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.ts index af1144f019..9229f5d78a 100644 --- a/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.ts +++ b/packages/backend-dynamic-feature-service/src/scanner/plugin-scanner.ts @@ -136,6 +136,11 @@ export class PluginScanner { withFileTypes: true, })) { const pluginDir = dirEnt; + + if (pluginDir.name === 'lost+found') { + this.logger.debug(`skipping '${pluginDir.name}' system directory`); + continue; + } const pluginHome = path.normalize( path.resolve(dynamicPluginsLocation, pluginDir.name), );