Skip to content

Commit 9cd71c2

Browse files
committed
Check for latest instance id
1 parent 17c6559 commit 9cd71c2

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

src/heartbeat.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,15 @@ export class HeartbeatManager extends Disposable {
104104
await service.server.sendHeartBeat({ instanceId: this.instanceId, wasClosed });
105105
if (wasClosed) {
106106
this.telemetry.sendTelemetryEvent('ide_close_signal', { workspaceId: this.workspaceId, instanceId: this.instanceId, gitpodHost: this.gitpodHost, clientKind: 'vscode' });
107-
this.logger.trace('send ' + suffix);
107+
this.logger.trace('Send ' + suffix);
108108
}
109109
} else {
110+
this.logger.trace('Stopping heartbeat as workspace is not running');
110111
this.stopHeartbeat();
111112
}
112113
}, this.logger);
113114
} catch (err) {
114-
this.logger.error(`failed to send ${suffix}:`, err);
115+
this.logger.error(`Failed to send ${suffix}:`, err);
115116
}
116117
}
117118

src/remoteConnector.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,21 @@ export default class RemoteConnector extends Disposable {
832832
return;
833833
}
834834

835+
const session = await this.getGitpodSession(connectionInfo.gitpodHost);
836+
if (!session) {
837+
return;
838+
}
839+
840+
const workspaceInfo = await withServerApi(session.accessToken, connectionInfo.gitpodHost, service => service.server.getWorkspace(connectionInfo.workspaceId), this.logger);
841+
if (workspaceInfo.latestInstance?.status?.phase !== 'running') {
842+
return;
843+
}
844+
845+
if (workspaceInfo.latestInstance.id !== connectionInfo.instanceId) {
846+
this.logger.info(`Updating workspaces latest instance id ${connectionInfo.instanceId} => ${workspaceInfo.latestInstance.id}`);
847+
connectionInfo.instanceId = workspaceInfo.latestInstance.id;
848+
}
849+
835850
await this.context.globalState.update(`${RemoteConnector.SSH_DEST_KEY}${sshDestStr}`, { ...connectionInfo, isFirstConnection: false });
836851

837852
const gitpodVersion = await getGitpodVersion(connectionInfo.gitpodHost);
@@ -852,11 +867,8 @@ export default class RemoteConnector extends Disposable {
852867
}
853868
};
854869

855-
const session = await this.getGitpodSession(connectionInfo.gitpodHost);
856-
if (session) {
857-
this.startHeartBeat(session.accessToken, connectionInfo);
858-
tryStopRemoteHeartbeat();
859-
}
870+
this.startHeartBeat(session.accessToken, connectionInfo);
871+
tryStopRemoteHeartbeat();
860872
} else {
861873
this.logger.warn(`Local heatbeat not supported in ${connectionInfo.gitpodHost}, using version ${gitpodVersion.version}`);
862874
}

0 commit comments

Comments
 (0)