Skip to content

Commit 593ecee

Browse files
authored
Add a feature flag to enable expiration of retry lanes (#27694)
An attempt to see if we can bring back expiration of retry lanes to avoid cases resolving Suspense can be starved by frequent updates. In the past, this caused increase browser crashes, but a lot of time has passed since then. Just trying if we can re-enable this. Old PR that reverted adding the timeout: #21300
1 parent 07cc4a0 commit 593ecee

9 files changed

+16
-3
lines changed

packages/react-reconciler/src/ReactFiberLane.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ export type Lane = number;
1919
export type LaneMap<T> = Array<T>;
2020

2121
import {
22-
enableSchedulingProfiler,
23-
enableUpdaterTracking,
2422
allowConcurrentByDefault,
23+
enableRetryLaneExpiration,
24+
enableSchedulingProfiler,
2525
enableTransitionTracing,
2626
enableUnifiedSyncLane,
27+
enableUpdaterTracking,
2728
} from 'shared/ReactFeatureFlags';
2829
import {isDevToolsPresent} from './ReactFiberDevToolsHook';
2930
import {ConcurrentUpdatesByDefaultMode, NoMode} from './ReactTypeOfMode';
@@ -383,7 +384,7 @@ function computeExpirationTime(lane: Lane, currentTime: number) {
383384
// crashes. There must be some other underlying bug; not super urgent but
384385
// ideally should figure out why and fix it. Unfortunately we don't have
385386
// a repro for the crashes, only detected via production metrics.
386-
return NoTimestamp;
387+
return enableRetryLaneExpiration ? currentTime + 5000 : NoTimestamp;
387388
case SelectiveHydrationLane:
388389
case IdleHydrationLane:
389390
case IdleLane:

packages/shared/ReactFeatureFlags.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ export const passChildrenWhenCloningPersistedNodes = false;
128128

129129
export const enableUseDeferredValueInitialArg = __EXPERIMENTAL__;
130130

131+
/**
132+
* Enables an expiration time for retry lanes to avoid starvation.
133+
*/
134+
export const enableRetryLaneExpiration = false;
135+
131136
// -----------------------------------------------------------------------------
132137
// Chopping Block
133138
//

packages/shared/forks/ReactFeatureFlags.native-fb.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export const enableComponentStackLocations = false;
6666
export const enableLegacyFBSupport = false;
6767
export const enableFilterEmptyStringAttributesDOM = false;
6868
export const enableGetInspectorDataForInstanceInProduction = true;
69+
export const enableRetryLaneExpiration = false;
6970

7071
export const createRootStrictEffectsByDefault = false;
7172

packages/shared/forks/ReactFeatureFlags.native-oss.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export const enableComponentStackLocations = false;
4949
export const enableLegacyFBSupport = false;
5050
export const enableFilterEmptyStringAttributesDOM = false;
5151
export const enableGetInspectorDataForInstanceInProduction = false;
52+
export const enableRetryLaneExpiration = false;
5253

5354
export const createRootStrictEffectsByDefault = false;
5455
export const enableUseRefAccessWarning = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export const enableComponentStackLocations = true;
4949
export const enableLegacyFBSupport = false;
5050
export const enableFilterEmptyStringAttributesDOM = false;
5151
export const enableGetInspectorDataForInstanceInProduction = false;
52+
export const enableRetryLaneExpiration = false;
5253

5354
export const createRootStrictEffectsByDefault = false;
5455
export const enableUseRefAccessWarning = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.native.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const enableUseEffectEventHook = false;
5151
export const enableClientRenderFallbackOnTextMismatch = true;
5252
export const createRootStrictEffectsByDefault = false;
5353
export const enableUseRefAccessWarning = false;
54+
export const enableRetryLaneExpiration = false;
5455

5556
export const disableSchedulerTimeoutInWorkLoop = false;
5657
export const enableLazyContextPropagation = false;

packages/shared/forks/ReactFeatureFlags.test-renderer.www.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export const enableComponentStackLocations = true;
4949
export const enableLegacyFBSupport = false;
5050
export const enableFilterEmptyStringAttributesDOM = true;
5151
export const enableGetInspectorDataForInstanceInProduction = false;
52+
export const enableRetryLaneExpiration = false;
5253

5354
export const createRootStrictEffectsByDefault = false;
5455
export const enableUseRefAccessWarning = false;

packages/shared/forks/ReactFeatureFlags.www-dynamic.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export const enableAsyncActions = __VARIANT__;
2929
export const alwaysThrottleRetries = __VARIANT__;
3030
export const enableDO_NOT_USE_disableStrictPassiveEffect = __VARIANT__;
3131
export const enableUseDeferredValueInitialArg = __VARIANT__;
32+
export const enableRetryLaneExpiration = __VARIANT__;
3233

3334
// Enable this flag to help with concurrent mode debugging.
3435
// It logs information to the console about React scheduling, rendering, and commit phases.

packages/shared/forks/ReactFeatureFlags.www.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const {
2424
enableUseRefAccessWarning,
2525
enableLazyContextPropagation,
2626
enableUnifiedSyncLane,
27+
enableRetryLaneExpiration,
2728
enableTransitionTracing,
2829
enableCustomElementPropertySupport,
2930
enableDeferRootSchedulingToMicrotask,

0 commit comments

Comments
 (0)