Skip to content

Commit 24a2ba0

Browse files
authored
[DevTools] fix: dedupe file fetch requests and define a timeout (facebook#34566)
If there is a large owner stack, we could potentially spam multiple fetch requests for the same source map. This adds a simple deduplication logic, based on URL. Also, this adds a timeout of 60 seconds to all fetch requests initiated by fileFetcher content script.
1 parent 012b371 commit 24a2ba0

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/react-devtools-extensions/src/contentScripts/fileFetcher.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ function fetchResource(url) {
2323
});
2424
};
2525

26-
fetch(url, {cache: 'force-cache'}).then(
26+
fetch(url, {cache: 'force-cache', signal: AbortSignal.timeout(60000)}).then(
2727
response => {
2828
if (response.ok) {
2929
response

packages/react-devtools-extensions/src/main/fetchFileWithCaching.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,18 @@ const fetchFromNetworkCache = (url, resolve, reject) => {
7878
});
7979
};
8080

81+
const pendingFetchRequests = new Set();
82+
function pendingFetchRequestsCleanup({payload, source}) {
83+
if (source === 'react-devtools-background') {
84+
switch (payload?.type) {
85+
case 'fetch-file-with-cache-complete':
86+
case 'fetch-file-with-cache-error':
87+
pendingFetchRequests.delete(payload.url);
88+
}
89+
}
90+
}
91+
chrome.runtime.onMessage.addListener(pendingFetchRequestsCleanup);
92+
8193
const fetchFromPage = async (url, resolve, reject) => {
8294
debugLog('[main] fetchFromPage()', url);
8395

@@ -97,7 +109,11 @@ const fetchFromPage = async (url, resolve, reject) => {
97109
}
98110

99111
chrome.runtime.onMessage.addListener(onPortMessage);
112+
if (pendingFetchRequests.has(url)) {
113+
return;
114+
}
100115

116+
pendingFetchRequests.add(url);
101117
chrome.runtime.sendMessage({
102118
source: 'devtools-page',
103119
payload: {

0 commit comments

Comments
 (0)