diff --git a/packages/relay-runtime/store/RelayModernStore.js b/packages/relay-runtime/store/RelayModernStore.js index 79afe1d58fe65..b2989a3b02136 100644 --- a/packages/relay-runtime/store/RelayModernStore.js +++ b/packages/relay-runtime/store/RelayModernStore.js @@ -233,7 +233,7 @@ class RelayModernStore implements Store { if (rootEntryIsStale) { this._roots.delete(id); - this._scheduleGC(); + this.scheduleGC(); } else { this._releaseBuffer.push(id); @@ -243,7 +243,7 @@ class RelayModernStore implements Store { if (this._releaseBuffer.length > this._gcReleaseBufferSize) { const _id = this._releaseBuffer.shift(); this._roots.delete(_id); - this._scheduleGC(); + this.scheduleGC(); } } } @@ -413,7 +413,7 @@ class RelayModernStore implements Store { if (this._gcHoldCounter > 0) { this._gcHoldCounter--; if (this._gcHoldCounter === 0 && this._shouldScheduleGC) { - this._scheduleGC(); + this.scheduleGC(); this._shouldScheduleGC = false; } } @@ -592,7 +592,7 @@ class RelayModernStore implements Store { } this._optimisticSource = null; if (this._shouldScheduleGC) { - this._scheduleGC(); + this.scheduleGC(); } this._subscriptions.forEach(subscription => { const backup = subscription.backup; @@ -614,7 +614,7 @@ class RelayModernStore implements Store { }); } - _scheduleGC() { + scheduleGC() { if (this._gcHoldCounter > 0) { this._shouldScheduleGC = true; return; diff --git a/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithFlight-test.js b/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithFlight-test.js index 48d95098db9b1..b8cf886f0b7f8 100644 --- a/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithFlight-test.js +++ b/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithFlight-test.js @@ -161,7 +161,10 @@ describe('execute() with Flight field', () => { expect(complete).toBeCalledTimes(0); expect(error).toBeCalledTimes(0); expect(reactFlightPayloadDeserializer).toBeCalledTimes(1); - store.__gc(); + + store.scheduleGC(); + jest.runAllTimers(); + expect(environment.lookup(innerOperation.fragment).data).toEqual({ node: { name: 'Lauren', @@ -259,7 +262,10 @@ describe('execute() with Flight field', () => { expect(complete).toBeCalledTimes(0); expect(error).toBeCalledTimes(0); expect(reactFlightPayloadDeserializer).toBeCalledTimes(1); - store.__gc(); // Invoke gc to verify that data is retained + + store.scheduleGC(); // Invoke gc to verify that data is retained + jest.runAllTimers(); + expect(environment.lookup(innerOperation.fragment).data).toEqual({ node: { name: 'Lauren', diff --git a/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithStreamedConnection-test.js b/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithStreamedConnection-test.js index 33b1909e512d5..b4e477a889269 100644 --- a/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithStreamedConnection-test.js +++ b/packages/relay-runtime/store/__tests__/RelayModernEnvironment-ExecuteWithStreamedConnection-test.js @@ -1326,7 +1326,7 @@ describe('execute() fetches a @stream-ed @connection', () => { callback.mockClear(); // Triggers a GC - store.__gc(); + store.scheduleGC(); jest.runAllTimers(); // Second edge should be appended correctly diff --git a/packages/relay-runtime/store/__tests__/RelayModernEnvironment-TypeRefinement-test.js b/packages/relay-runtime/store/__tests__/RelayModernEnvironment-TypeRefinement-test.js index 3b26365ec5df5..6e9ac0b74278f 100644 --- a/packages/relay-runtime/store/__tests__/RelayModernEnvironment-TypeRefinement-test.js +++ b/packages/relay-runtime/store/__tests__/RelayModernEnvironment-TypeRefinement-test.js @@ -131,7 +131,8 @@ describe('missing data detection with feature ENABLE_PRECISE_TYPE_REFINEMENT', ( function commitPayload(operation, payload) { environment.retain(operation); environment.commitPayload(operation, payload); - (environment.getStore(): $FlowFixMe).__gc(); + (environment.getStore(): $FlowFixMe).scheduleGC(); + jest.runAllTimers(); } it('concrete spread on matching concrete type reads data and counts missing user fields as missing', () => {