Skip to content

Commit b6e517b

Browse files
committed
fix(replay): replay crashes on win10 during load
1 parent 937fd9b commit b6e517b

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

replay/backend/models/ReplayView.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default class ReplayView extends ViewBackend {
1818
public tabState: ReplayTabState;
1919
public readonly playbarView: PlaybarView;
2020

21+
private isTabLoaded = false;
2122
private lastInactivityMillis = 0;
2223

2324
public constructor(window: Window) {
@@ -55,6 +56,7 @@ export default class ReplayView extends ViewBackend {
5556
}
5657

5758
public async loadTab(id?: string) {
59+
this.isTabLoaded = false;
5860
await this.clearTabState();
5961
this.attach();
6062

@@ -75,6 +77,7 @@ export default class ReplayView extends ViewBackend {
7577
new Promise(resolve => setTimeout(resolve, 500)),
7678
]);
7779

80+
this.isTabLoaded = true;
7881
this.sizeWebContentsToFit();
7982

8083
if (this.tabState.currentPlaybarOffsetPct > 0) {
@@ -166,7 +169,7 @@ export default class ReplayView extends ViewBackend {
166169
}
167170

168171
public sizeWebContentsToFit() {
169-
if (!this.tabState) return;
172+
if (!this.tabState || !this.isTabLoaded) return;
170173
const screenSize = this.browserView.getBounds();
171174

172175
const viewSize = {

session-state/api/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,10 @@ export async function createReplayServer(listenPort?: number): Promise<ISessionR
159159
for (const pending of allPending) resolvedPromises.add(pending);
160160
await new Promise(setImmediate);
161161
}
162-
stream.sendTrailers({ 'pushes-sent': resolvedPromises.size });
162+
163+
if (!stream.destroyed) {
164+
stream.sendTrailers({ 'pushes-sent': resolvedPromises.size });
165+
}
163166
activeClients.delete(sessionId);
164167
}
165168

0 commit comments

Comments
 (0)