From 0b07e4534c2977013f778848cf25b1e25419ea9c Mon Sep 17 00:00:00 2001 From: Jacob Chung Date: Wed, 18 Feb 2026 13:16:58 -0800 Subject: [PATCH] Add debug logging to listRegionProfile and increase cache TTL to 60s Add request ID and profile count logging to each listAvailableProfiles API call to help diagnose cases where profiles are not loading (P371865494, V2083780156). Also log early-return conditions and summary after all regions are queried. Increase cache expiration from 30s to 60s. --- .../region/regionProfileManager.ts | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/core/src/codewhisperer/region/regionProfileManager.ts b/packages/core/src/codewhisperer/region/regionProfileManager.ts index aab2ed04dab..1433725f9c5 100644 --- a/packages/core/src/codewhisperer/region/regionProfileManager.ts +++ b/packages/core/src/codewhisperer/region/regionProfileManager.ts @@ -70,7 +70,7 @@ export class RegionProfileManager { constructor(private readonly profileProvider: () => Promise) { super( 'aws.amazonq.regionProfiles.cache', - 3600000, + 60000, { resource: { locked: false, @@ -141,15 +141,26 @@ export class RegionProfileManager { const conn = this.connectionProvider() if (conn === undefined || !isSsoConnection(conn)) { + RegionProfileManager.logger.info( + `listRegionProfile: no valid SSO connection, skipping (conn=${conn === undefined ? 'undefined' : 'non-SSO'})` + ) return [] } const availableProfiles: RegionProfile[] = [] const failedRegions: string[] = [] + RegionProfileManager.logger.info( + `listRegionProfile: calling listAvailableProfiles across ${endpoints.size} regions` + ) for (const [region, endpoint] of endpoints.entries()) { const client = await this._createQClient(region, endpoint, conn as SsoConnection) - const requester = async (request: CodeWhispererUserClient.ListAvailableProfilesRequest) => - client.listAvailableProfiles(request).promise() + const requester = async (request: CodeWhispererUserClient.ListAvailableProfilesRequest) => { + const response = await client.listAvailableProfiles(request).promise() + RegionProfileManager.logger.info( + `listRegionProfile: listAvailableProfiles response for region=${region}, requestId=${(response as any).$response?.requestId}, profileCount=${response.profiles?.length ?? 0}` + ) + return response + } const request: CodeWhispererUserClient.ListAvailableProfilesRequest = {} try { const profiles = await pageableToCollection(requester, request, 'nextToken', 'profiles') @@ -178,6 +189,10 @@ export class RegionProfileManager { } } + RegionProfileManager.logger.info( + `listRegionProfile: completed. totalProfiles=${availableProfiles.length}, failedRegions=[${failedRegions.join(', ')}]` + ) + // Throw error if any regional API calls failed and no profiles are available if (failedRegions.length > 0 && availableProfiles.length === 0) { throw new ToolkitError(`Failed to list Q Developer profiles for regions: ${failedRegions.join(', ')}`, {