diff --git a/server/account/src/operations.ts b/server/account/src/operations.ts index 3f735d996c..f989c57a80 100644 --- a/server/account/src/operations.ts +++ b/server/account/src/operations.ts @@ -1490,11 +1490,16 @@ export async function getPendingWorkspace ( operationQuery, attemptsQuery, region !== '' ? { region } : defaultRegionQuery, - { lastProcessingTime: { $lt: Date.now() - processingTimeoutMs } } + { + $or: [ + { lastProcessingTime: { $exists: false } }, + { lastProcessingTime: { $lt: Date.now() - processingTimeoutMs } } + ] + } ] } - return ( + const result = (await wsCollection.findOneAndUpdate( query, { @@ -1512,7 +1517,19 @@ export async function getPendingWorkspace ( } } )) ?? undefined - ) + + if (result != null) { + ctx.info('getPendingWorkspace', { + workspaceId: result.workspace, + mode: result.mode, + workspaceName: result.workspaceName, + operation, + region, + version + }) + } + + return result } /** diff --git a/server/workspace-service/src/service.ts b/server/workspace-service/src/service.ts index a6399c761e..1ce0a6c3c3 100644 --- a/server/workspace-service/src/service.ts +++ b/server/workspace-service/src/service.ts @@ -220,7 +220,7 @@ export class WorkspaceWorker { workspace: BaseWorkspaceInfo, opt: WorkspaceOptions ): Promise { - switch (workspace.mode) { + switch (workspace.mode ?? 'active') { case 'creating': case 'pending-creation': // We need to either start workspace creation @@ -237,6 +237,8 @@ export class WorkspaceWorker { // Seems we failed to delete, so let's restore deletion. // TODO: move from account break + default: + ctx.error('Unknown workspace mode', { workspace: workspace.workspace, mode: workspace.mode }) } }