Skip to content

Commit 14a1028

Browse files
authored
Account for network errors during user folder retrieval (#332)
1 parent 1697d6f commit 14a1028

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

src/persistence/BaseMCWSPersistenceProvider.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,10 @@ export default class BaseMCWSPersistenceProvider {
202202

203203
return;
204204
}
205+
} else {
206+
throw readError;
205207
}
206208
}
207-
208-
return;
209209
}
210210

211211
/**

src/persistence/MCWSPersistenceProvider.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ export default class MCWSPersistenceProvider extends BaseMCWSPersistenceProvider
1818
options.signal = abortSignal;
1919
}
2020

21-
const persistenceNamespace = await this.#getNamespace(namespace, options);
22-
2321
try {
22+
const persistenceNamespace = await this.#getNamespace(namespace, options);
2423
let result = await persistenceNamespace.opaqueFile(key).read();
2524

2625
result = await this.#fromPersistableModel(result, identifier);
@@ -29,6 +28,21 @@ export default class MCWSPersistenceProvider extends BaseMCWSPersistenceProvider
2928
} catch (error) {
3029
console.warn('MCWSPersistenceProvider:get', error);
3130

31+
// it's a network error, we don't want to create a new object
32+
if (error.status !== 404) {
33+
const userFolder = namespace.split(':')[0].split('-').pop();
34+
this.openmct.notifications.error(
35+
`Unable to open ${userFolder} folder. Close and open the folder to try again. If issue persists, check network connection and try again.`
36+
);
37+
38+
return {
39+
identifier,
40+
type: 'unknown',
41+
name: 'Error: ' + this.openmct.objects.makeKeyString(identifier),
42+
networkError: true
43+
};
44+
}
45+
3246
return;
3347
}
3448
}

src/persistence/oldPersistenceFolderInterceptor.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ export default async function oldPersistenceFolderInterceptor(
3636
let userId = 'system';
3737
let namespaceDefinition;
3838

39+
// if the object is a network error object, we don't want to create a new object
40+
if (object.networkError === true) {
41+
return object;
42+
}
43+
3944
if (
4045
isUserNamespace(usersNamespace, userKeyRegex, identifier) &&
4146
!identifier.namespace.includes('shared')

0 commit comments

Comments
 (0)