[Fizz][Float] Do not write after closing the stream (#27541)

Float methods can hang on to a reference to a Request after the request
is closed due to AsyncLocalStorage. If a Float method is called at this
point we do not want to attempt to flush anything. This change updates
the closing logic to also call `stopFlowing` which will ensure that any
checks against the destination properly reflect that we cannot do any
writes. In addition it updates the enqueueFlush logic to existence check
the destination inside the work function since it can change across the
work scheduling gap if it is async.

fixes: https://github.com/facebook/react/issues/27540

DiffTrain build for commit https://github.com/facebook/react/commit/601e5c38505ebc0ee099d8666b2f7a8b03159ac4.
This commit is contained in:
gnoff
2023-10-18 17:11:22 +00:00
parent f7bb41060d
commit cd4934fab0
7 changed files with 9 additions and 9 deletions
@@ -24878,7 +24878,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-canary-20c91b653-20231018";
var ReactVersion = "18.3.0-canary-601e5c385-20231018";
// Might add PROFILE later.
@@ -9022,7 +9022,7 @@ var devToolsConfig$jscomp$inline_1031 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-canary-20c91b653-20231018",
version: "18.3.0-canary-601e5c385-20231018",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1224 = {
@@ -9053,7 +9053,7 @@ var internals$jscomp$inline_1224 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-canary-20c91b653-20231018"
reconcilerVersion: "18.3.0-canary-601e5c385-20231018"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1225 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -9448,7 +9448,7 @@ var devToolsConfig$jscomp$inline_1073 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-canary-20c91b653-20231018",
version: "18.3.0-canary-601e5c385-20231018",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1265 = {
@@ -9479,7 +9479,7 @@ var internals$jscomp$inline_1265 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-canary-20c91b653-20231018"
reconcilerVersion: "18.3.0-canary-601e5c385-20231018"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1266 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -27,7 +27,7 @@ if (
}
"use strict";
var ReactVersion = "18.3.0-canary-20c91b653-20231018";
var ReactVersion = "18.3.0-canary-601e5c385-20231018";
// ATTENTION
// When adding new symbols to this file,
@@ -580,4 +580,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "18.3.0-canary-20c91b653-20231018";
exports.version = "18.3.0-canary-601e5c385-20231018";
@@ -583,7 +583,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactCurrentDispatcher.current.useTransition();
};
exports.version = "18.3.0-canary-20c91b653-20231018";
exports.version = "18.3.0-canary-601e5c385-20231018";
/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
@@ -1 +1 @@
20c91b65341fd404185fc778c6844ac29ab815d5
601e5c38505ebc0ee099d8666b2f7a8b03159ac4