Skip to content

Commit 5aa82cb

Browse files
committed
Don't track Promise stack if there's no owner
1 parent befc124 commit 5aa82cb

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

packages/react-server/src/ReactFlightAsyncSequence.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type PromiseWithDebugInfo = interface extends Promise<any> {
2626
export type IONode = {
2727
tag: 0,
2828
owner: null | ReactComponentInfo,
29-
stack: null, // callsite that spawned the I/O
29+
stack: null | ReactStackTrace, // callsite that spawned the I/O
3030
start: number, // start time when the first part of the I/O sequence started
3131
end: number, // we typically don't use this. only when there's no promise intermediate.
3232
promise: null, // not used on I/O

packages/react-server/src/ReactFlightServerConfigDebugNode.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,11 @@ export function initAsyncDebugInfo(): void {
149149
previous: current === undefined ? null : current, // The path that led us here.
150150
}: UnresolvedAwaitNode);
151151
} else {
152+
const owner = resolveOwner();
152153
node = ({
153154
tag: UNRESOLVED_PROMISE_NODE,
154-
owner: resolveOwner(),
155-
stack: parseStackTrace(new Error(), 5),
155+
owner: owner,
156+
stack: owner === null ? null : parseStackTrace(new Error(), 5),
156157
start: performance.now(),
157158
end: -1.1, // Set when we resolve.
158159
promise: new WeakRef((resource: Promise<any>)),
@@ -170,10 +171,11 @@ export function initAsyncDebugInfo(): void {
170171
) {
171172
if (trigger === undefined) {
172173
// We have begun a new I/O sequence.
174+
const owner = resolveOwner();
173175
node = ({
174176
tag: IO_NODE,
175-
owner: resolveOwner(),
176-
stack: null,
177+
owner: owner,
178+
stack: owner === null ? parseStackTrace(new Error(), 3) : null,
177179
start: performance.now(),
178180
end: -1.1, // Only set when pinged.
179181
promise: null,
@@ -185,10 +187,11 @@ export function initAsyncDebugInfo(): void {
185187
trigger.tag === UNRESOLVED_AWAIT_NODE
186188
) {
187189
// We have begun a new I/O sequence after the await.
190+
const owner = resolveOwner();
188191
node = ({
189192
tag: IO_NODE,
190-
owner: resolveOwner(),
191-
stack: null,
193+
owner: owner,
194+
stack: owner === null ? parseStackTrace(new Error(), 3) : null,
192195
start: performance.now(),
193196
end: -1.1, // Only set when pinged.
194197
promise: null,

packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ describe('ReactFlightAsyncDebugInfo', () => {
863863
"awaited": {
864864
"end": 0,
865865
"env": "Server",
866-
"name": "",
866+
"name": "setTimeout",
867867
"owner": {
868868
"env": "Server",
869869
"key": null,
@@ -880,6 +880,16 @@ describe('ReactFlightAsyncDebugInfo', () => {
880880
],
881881
],
882882
},
883+
"stack": [
884+
[
885+
"Component",
886+
"/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
887+
811,
888+
7,
889+
809,
890+
5,
891+
],
892+
],
883893
"start": 0,
884894
},
885895
"env": "Server",

0 commit comments

Comments
 (0)