From b3acaa16b20e533351fa32a19879ac6060e1386e Mon Sep 17 00:00:00 2001 From: tienifr Date: Sat, 20 Apr 2024 11:16:01 +0700 Subject: [PATCH 1/5] fix add queue command length log --- src/libs/API/index.ts | 4 ++++ src/libs/Network/SequentialQueue.ts | 2 ++ src/libs/actions/PersistedRequests.ts | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libs/API/index.ts b/src/libs/API/index.ts index dbbcf790edf0..bfa1b95836f8 100644 --- a/src/libs/API/index.ts +++ b/src/libs/API/index.ts @@ -5,6 +5,7 @@ import * as Middleware from '@libs/Middleware'; import * as SequentialQueue from '@libs/Network/SequentialQueue'; import * as Pusher from '@libs/Pusher/pusher'; import * as Request from '@libs/Request'; +import * as PersistedRequests from '@userActions/PersistedRequests'; import CONST from '@src/CONST'; import type OnyxRequest from '@src/types/onyx/Request'; import type Response from '@src/types/onyx/Response'; @@ -159,6 +160,9 @@ function read(command: TCommand, apiCommandParamet // Ensure all write requests on the sequential queue have finished responding before running read requests. // Responses from read requests can overwrite the optimistic data inserted by // write requests that use the same Onyx keys and haven't responded yet. + if (PersistedRequests.getLength() > 0) { + Log.info(`[API] '${command}' is waiting on ${PersistedRequests.getLength()} write commands`); + } SequentialQueue.waitForIdle().then(() => makeRequestWithSideEffects(command, apiCommandParameters, onyxData, CONST.API_REQUEST_TYPE.READ)); } diff --git a/src/libs/Network/SequentialQueue.ts b/src/libs/Network/SequentialQueue.ts index 38b0549b28bc..0cfa8e17b589 100644 --- a/src/libs/Network/SequentialQueue.ts +++ b/src/libs/Network/SequentialQueue.ts @@ -1,5 +1,6 @@ import Onyx from 'react-native-onyx'; import * as ActiveClientManager from '@libs/ActiveClientManager'; +import Log from '@libs/Log'; import * as Request from '@libs/Request'; import * as RequestThrottle from '@libs/RequestThrottle'; import * as PersistedRequests from '@userActions/PersistedRequests'; @@ -162,6 +163,7 @@ NetworkStore.onReconnection(flush); function push(request: OnyxRequest) { // Add request to Persisted Requests so that it can be retried if it fails PersistedRequests.save(request); + Log.info(`[SequentialQueue] '${request.commandName}' command queued. Queue length is ${PersistedRequests.getLength()}`); // If we are offline we don't need to trigger the queue to empty as it will happen when we come back online if (NetworkStore.isOffline()) { diff --git a/src/libs/actions/PersistedRequests.ts b/src/libs/actions/PersistedRequests.ts index 8894af8c374f..410b8931d92a 100644 --- a/src/libs/actions/PersistedRequests.ts +++ b/src/libs/actions/PersistedRequests.ts @@ -48,4 +48,8 @@ function getAll(): Request[] { return persistedRequests; } -export {clear, save, getAll, remove, update}; +function getLength(): number { + return persistedRequests.length; +} + +export {clear, save, getAll, remove, update, getLength}; From 09b2e1295a8e6c0a8158e4d0024169195cf6c64c Mon Sep 17 00:00:00 2001 From: tienifr Date: Sat, 20 Apr 2024 11:25:00 +0700 Subject: [PATCH 2/5] fix use promise --- src/libs/Network/SequentialQueue.ts | 1 - src/libs/actions/PersistedRequests.ts | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libs/Network/SequentialQueue.ts b/src/libs/Network/SequentialQueue.ts index 0cfa8e17b589..d0b10a88388f 100644 --- a/src/libs/Network/SequentialQueue.ts +++ b/src/libs/Network/SequentialQueue.ts @@ -163,7 +163,6 @@ NetworkStore.onReconnection(flush); function push(request: OnyxRequest) { // Add request to Persisted Requests so that it can be retried if it fails PersistedRequests.save(request); - Log.info(`[SequentialQueue] '${request.commandName}' command queued. Queue length is ${PersistedRequests.getLength()}`); // If we are offline we don't need to trigger the queue to empty as it will happen when we come back online if (NetworkStore.isOffline()) { diff --git a/src/libs/actions/PersistedRequests.ts b/src/libs/actions/PersistedRequests.ts index 410b8931d92a..0bf51a500ce6 100644 --- a/src/libs/actions/PersistedRequests.ts +++ b/src/libs/actions/PersistedRequests.ts @@ -1,5 +1,7 @@ import isEqual from 'lodash/isEqual'; import Onyx from 'react-native-onyx'; +import Log from '@libs/Log'; +import * as PersistedRequests from '@userActions/PersistedRequests'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Request} from '@src/types/onyx'; @@ -19,7 +21,9 @@ function clear() { function save(requestToPersist: Request) { persistedRequests.push(requestToPersist); - Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests); + Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests).then(() => { + Log.info(`[SequentialQueue] '${requestToPersist.command}' command queued. Queue length is ${PersistedRequests.getLength()}`); + }); } function remove(requestToRemove: Request) { From a34d3baacc659e1d70299f8ed0b4709cc1b01d83 Mon Sep 17 00:00:00 2001 From: tienifr Date: Sat, 20 Apr 2024 11:26:42 +0700 Subject: [PATCH 3/5] fix lint --- src/libs/Network/SequentialQueue.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/Network/SequentialQueue.ts b/src/libs/Network/SequentialQueue.ts index d0b10a88388f..38b0549b28bc 100644 --- a/src/libs/Network/SequentialQueue.ts +++ b/src/libs/Network/SequentialQueue.ts @@ -1,6 +1,5 @@ import Onyx from 'react-native-onyx'; import * as ActiveClientManager from '@libs/ActiveClientManager'; -import Log from '@libs/Log'; import * as Request from '@libs/Request'; import * as RequestThrottle from '@libs/RequestThrottle'; import * as PersistedRequests from '@userActions/PersistedRequests'; From 1ecb38527325ca78f22c4427074a49ac766c5576 Mon Sep 17 00:00:00 2001 From: tienifr Date: Sat, 20 Apr 2024 11:35:25 +0700 Subject: [PATCH 4/5] fix lint --- src/libs/actions/PersistedRequests.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/actions/PersistedRequests.ts b/src/libs/actions/PersistedRequests.ts index 0bf51a500ce6..ab380a2ae1fa 100644 --- a/src/libs/actions/PersistedRequests.ts +++ b/src/libs/actions/PersistedRequests.ts @@ -1,7 +1,6 @@ import isEqual from 'lodash/isEqual'; import Onyx from 'react-native-onyx'; import Log from '@libs/Log'; -import * as PersistedRequests from '@userActions/PersistedRequests'; import ONYXKEYS from '@src/ONYXKEYS'; import type {Request} from '@src/types/onyx'; @@ -22,7 +21,7 @@ function clear() { function save(requestToPersist: Request) { persistedRequests.push(requestToPersist); Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests).then(() => { - Log.info(`[SequentialQueue] '${requestToPersist.command}' command queued. Queue length is ${PersistedRequests.getLength()}`); + Log.info(`[SequentialQueue] '${requestToPersist.command}' command queued. Queue length is ${getLength()}`); }); } From 7fb8b40e9f5d236f267cfea1db0bf246a7e4fa36 Mon Sep 17 00:00:00 2001 From: tienifr Date: Sat, 20 Apr 2024 11:42:35 +0700 Subject: [PATCH 5/5] fix lint --- src/libs/actions/PersistedRequests.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/actions/PersistedRequests.ts b/src/libs/actions/PersistedRequests.ts index ab380a2ae1fa..839ed5b38763 100644 --- a/src/libs/actions/PersistedRequests.ts +++ b/src/libs/actions/PersistedRequests.ts @@ -18,6 +18,10 @@ function clear() { return Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, []); } +function getLength(): number { + return persistedRequests.length; +} + function save(requestToPersist: Request) { persistedRequests.push(requestToPersist); Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests).then(() => { @@ -51,8 +55,4 @@ function getAll(): Request[] { return persistedRequests; } -function getLength(): number { - return persistedRequests.length; -} - export {clear, save, getAll, remove, update, getLength};