Skip to content

Commit ae792d5

Browse files
LiGaCuJiatong Li
and
Jiatong Li
authored
fix(amazonq): differentiate listWorkspaceMetadata failure and empty result (#1566)
Co-authored-by: Jiatong Li <[email protected]>
1 parent fec6fbd commit ae792d5

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

server/aws-lsp-codewhisperer/src/language-server/workspaceContext/workspaceFolderManager.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ export class WorkspaceFolderManager {
418418

419419
private async checkRemoteWorkspaceStatusAndReact(skipUploads: boolean = false) {
420420
this.logging.log(`Checking remote workspace status for workspace [${this.workspaceIdentifier}]`)
421-
const { metadata, optOut } = await this.listWorkspaceMetadata(this.workspaceIdentifier)
421+
const { metadata, optOut, error } = await this.listWorkspaceMetadata(this.workspaceIdentifier)
422422

423423
if (optOut) {
424424
this.logging.log('User opted out, clearing all resources and starting opt-out monitor')
@@ -428,6 +428,11 @@ export class WorkspaceFolderManager {
428428
return
429429
}
430430

431+
if (error) {
432+
// Do not do anything if we received an exception but not caused by optOut
433+
return
434+
}
435+
431436
if (!metadata) {
432437
// Workspace no longer exists, Recreate it.
433438
this.resetRemoteWorkspaceId() // workspaceId would change if remote record is gone
@@ -668,14 +673,17 @@ export class WorkspaceFolderManager {
668673
private async listWorkspaceMetadata(workspaceRoot?: WorkspaceRoot): Promise<{
669674
metadata: WorkspaceMetadata | undefined | null
670675
optOut: boolean
676+
error: any
671677
}> {
672678
let metadata: WorkspaceMetadata | undefined | null
673679
let optOut = false
680+
let error: any
674681
try {
675682
const params = workspaceRoot ? { workspaceRoot } : {}
676683
const response = await this.serviceManager.getCodewhispererService().listWorkspaceMetadata(params)
677684
metadata = response && response.workspaces.length ? response.workspaces[0] : null
678685
} catch (e: any) {
686+
error = e
679687
this.logging.warn(`Error while fetching workspace (${workspaceRoot}) metadata: ${e?.message}`)
680688
if (
681689
e?.__type?.includes('AccessDeniedException') &&
@@ -685,7 +693,7 @@ export class WorkspaceFolderManager {
685693
optOut = true
686694
}
687695
}
688-
return { metadata, optOut }
696+
return { metadata, optOut, error }
689697
}
690698

691699
private async createWorkspace(workspaceRoot: WorkspaceRoot) {

0 commit comments

Comments
 (0)