From b98a1e4d10ea1c1601a926ddc2ecafc568ae4d3e Mon Sep 17 00:00:00 2001 From: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:46:18 -0600 Subject: [PATCH 1/4] Investigating additional stats events. --- .../platform/browser/webchannel_connection.ts | 58 ++++++++++++++++++- packages/webchannel-wrapper/src/index.d.ts | 20 +++++++ 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/packages/firestore/src/platform/browser/webchannel_connection.ts b/packages/firestore/src/platform/browser/webchannel_connection.ts index 38d78996b6e..376c91ca844 100644 --- a/packages/firestore/src/platform/browser/webchannel_connection.ts +++ b/packages/firestore/src/platform/browser/webchannel_connection.ts @@ -43,7 +43,7 @@ import { StreamBridge } from '../../remote/stream_bridge'; import { fail, hardAssert } from '../../util/assert'; import { generateUniqueDebugId } from '../../util/debug_uid'; import { Code, FirestoreError } from '../../util/error'; -import { logDebug, logWarn } from '../../util/log'; +import { logDebug, logError, logWarn } from '../../util/log'; import { Rejecter, Resolver } from '../../util/promise'; import { StringMap } from '../../util/types'; @@ -406,6 +406,13 @@ export class WebChannelConnection extends RestConnection { LOG_TAG, `RPC '${rpcName}' stream ${streamId} detected no buffering proxy` ); + } else { + logError( + LOG_TAG, + `\`RPC '${rpcName}' stream ${streamId} detected error ${this.statEventName( + event.stat + )}` + ); } }); @@ -418,4 +425,53 @@ export class WebChannelConnection extends RestConnection { }, 0); return streamBridge; } + + statEventName(statEventCode: number): string { + switch (statEventCode) { + case Stat.PROXY: + return 'PROXY'; + case Stat.NOPROXY: + return 'NOPROXY'; + case Stat.BACKCHANNEL_DEAD: + return 'BACKCHANNEL_DEAD'; + case Stat.BACKCHANNEL_MISSING: + return 'BACKCHANNEL_MISSING'; + case Stat.BROWSER_OFFLINE: + return 'BROWSER_OFFLINE'; + case Stat.CONNECT_ATTEMPT: + return 'CONNECT_ATTEMPT'; + case Stat.ERROR_NETWORK: + return 'ERROR_NETWORK'; + case Stat.ERROR_OTHER: + return 'ERROR_OTHER'; + case Stat.REQUEST_BAD_DATA: + return 'REQUEST_BAD_DATA'; + case Stat.REQUEST_BAD_STATUS: + return 'REQUEST_BAD_STATUS'; + case Stat.REQUEST_INCOMPLETE_DATA: + return 'REQUEST_INCOMPLETE_DATA'; + case Stat.REQUEST_NO_DATA: + return 'REQUEST_NO_DATA'; + case Stat.REQUEST_TIMEOUT: + return 'REQUEST_TIMEOUT'; + case Stat.REQUEST_UNKNOWN_SESSION_ID: + return 'REQUEST_UNKNOWN_SESSION_ID'; + case Stat.TEST_STAGE_ONE_FAILED: + return 'TEST_STAGE_ONE_FAILED'; + case Stat.TEST_STAGE_ONE_START: + return 'TEST_STAGE_ONE_START'; + case Stat.TEST_STAGE_TWO_DATA_BOTH: + return 'TEST_STAGE_TWO_DATA_BOTH'; + case Stat.TEST_STAGE_TWO_DATA_ONE: + return 'TEST_STAGE_TWO_DATA_ONE'; + case Stat.TEST_STAGE_TWO_DATA_TWO: + return 'TEST_STAGE_TWO_DATA_TWO'; + case Stat.TEST_STAGE_TWO_FAILED: + return 'TEST_STAGE_TWO_FAILED'; + case Stat.TEST_STAGE_TWO_START: + return 'TEST_STAGE_TWO_START'; + default: + return `unknown code ${statEventCode}`; + } + } } diff --git a/packages/webchannel-wrapper/src/index.d.ts b/packages/webchannel-wrapper/src/index.d.ts index 776bb8e8634..e8bc57cbd6a 100644 --- a/packages/webchannel-wrapper/src/index.d.ts +++ b/packages/webchannel-wrapper/src/index.d.ts @@ -38,8 +38,28 @@ export var Event: { export var Stat: { PROXY: number; NOPROXY: number; + BACKCHANNEL_DEAD: number; + BACKCHANNEL_MISSING: number; + BROWSER_OFFLINE: number; + CONNECT_ATTEMPT: number; + ERROR_NETWORK: number; + ERROR_OTHER: number; + REQUEST_BAD_DATA: number; + REQUEST_BAD_STATUS: number; + REQUEST_INCOMPLETE_DATA: number; + REQUEST_NO_DATA: number; + REQUEST_TIMEOUT: number; + REQUEST_UNKNOWN_SESSION_ID: number; + TEST_STAGE_ONE_FAILED: number; + TEST_STAGE_ONE_START: number; + TEST_STAGE_TWO_DATA_BOTH: number; + TEST_STAGE_TWO_DATA_ONE: number; + TEST_STAGE_TWO_DATA_TWO: number; + TEST_STAGE_TWO_FAILED: number; + TEST_STAGE_TWO_START: number; }; + export var ErrorCode: { NO_ERROR: number; HTTP_ERROR: number; From 8b8de1fbe511cad0efe7b3122895a60c0be9f87b Mon Sep 17 00:00:00 2001 From: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:51:22 -0600 Subject: [PATCH 2/4] Stat event logging, don't log 0. --- .../src/platform/browser/webchannel_connection.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/firestore/src/platform/browser/webchannel_connection.ts b/packages/firestore/src/platform/browser/webchannel_connection.ts index 376c91ca844..ee72a5c5e48 100644 --- a/packages/firestore/src/platform/browser/webchannel_connection.ts +++ b/packages/firestore/src/platform/browser/webchannel_connection.ts @@ -43,7 +43,7 @@ import { StreamBridge } from '../../remote/stream_bridge'; import { fail, hardAssert } from '../../util/assert'; import { generateUniqueDebugId } from '../../util/debug_uid'; import { Code, FirestoreError } from '../../util/error'; -import { logDebug, logError, logWarn } from '../../util/log'; +import { logDebug, logWarn } from '../../util/log'; import { Rejecter, Resolver } from '../../util/promise'; import { StringMap } from '../../util/types'; @@ -396,7 +396,9 @@ export class WebChannelConnection extends RestConnection { ); unguardedEventListen(requestStats, Event.STAT_EVENT, event => { - if (event.stat === Stat.PROXY) { + if (event.stat === 0) { + return; + } else if (event.stat === Stat.PROXY) { logDebug( LOG_TAG, `RPC '${rpcName}' stream ${streamId} detected buffering proxy` @@ -407,9 +409,9 @@ export class WebChannelConnection extends RestConnection { `RPC '${rpcName}' stream ${streamId} detected no buffering proxy` ); } else { - logError( + logWarn( LOG_TAG, - `\`RPC '${rpcName}' stream ${streamId} detected error ${this.statEventName( + `\`STAT_EVENT: RPC '${rpcName}' stream ${streamId} event ${this.statEventName( event.stat )}` ); From 0234c42c5184f55a746c538fdf958a98ce8b9df9 Mon Sep 17 00:00:00 2001 From: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:19:20 -0600 Subject: [PATCH 3/4] Clean up STAT_EVENT logging. --- .../platform/browser/webchannel_connection.ts | 53 +------------------ 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/packages/firestore/src/platform/browser/webchannel_connection.ts b/packages/firestore/src/platform/browser/webchannel_connection.ts index ee72a5c5e48..8b7f8b176d4 100644 --- a/packages/firestore/src/platform/browser/webchannel_connection.ts +++ b/packages/firestore/src/platform/browser/webchannel_connection.ts @@ -411,9 +411,7 @@ export class WebChannelConnection extends RestConnection { } else { logWarn( LOG_TAG, - `\`STAT_EVENT: RPC '${rpcName}' stream ${streamId} event ${this.statEventName( - event.stat - )}` + `\`STAT_EVENT: RPC '${rpcName}' stream ${streamId} event ${event.stat}` ); } }); @@ -427,53 +425,4 @@ export class WebChannelConnection extends RestConnection { }, 0); return streamBridge; } - - statEventName(statEventCode: number): string { - switch (statEventCode) { - case Stat.PROXY: - return 'PROXY'; - case Stat.NOPROXY: - return 'NOPROXY'; - case Stat.BACKCHANNEL_DEAD: - return 'BACKCHANNEL_DEAD'; - case Stat.BACKCHANNEL_MISSING: - return 'BACKCHANNEL_MISSING'; - case Stat.BROWSER_OFFLINE: - return 'BROWSER_OFFLINE'; - case Stat.CONNECT_ATTEMPT: - return 'CONNECT_ATTEMPT'; - case Stat.ERROR_NETWORK: - return 'ERROR_NETWORK'; - case Stat.ERROR_OTHER: - return 'ERROR_OTHER'; - case Stat.REQUEST_BAD_DATA: - return 'REQUEST_BAD_DATA'; - case Stat.REQUEST_BAD_STATUS: - return 'REQUEST_BAD_STATUS'; - case Stat.REQUEST_INCOMPLETE_DATA: - return 'REQUEST_INCOMPLETE_DATA'; - case Stat.REQUEST_NO_DATA: - return 'REQUEST_NO_DATA'; - case Stat.REQUEST_TIMEOUT: - return 'REQUEST_TIMEOUT'; - case Stat.REQUEST_UNKNOWN_SESSION_ID: - return 'REQUEST_UNKNOWN_SESSION_ID'; - case Stat.TEST_STAGE_ONE_FAILED: - return 'TEST_STAGE_ONE_FAILED'; - case Stat.TEST_STAGE_ONE_START: - return 'TEST_STAGE_ONE_START'; - case Stat.TEST_STAGE_TWO_DATA_BOTH: - return 'TEST_STAGE_TWO_DATA_BOTH'; - case Stat.TEST_STAGE_TWO_DATA_ONE: - return 'TEST_STAGE_TWO_DATA_ONE'; - case Stat.TEST_STAGE_TWO_DATA_TWO: - return 'TEST_STAGE_TWO_DATA_TWO'; - case Stat.TEST_STAGE_TWO_FAILED: - return 'TEST_STAGE_TWO_FAILED'; - case Stat.TEST_STAGE_TWO_START: - return 'TEST_STAGE_TWO_START'; - default: - return `unknown code ${statEventCode}`; - } - } } From 0f150bcafd7bf00bf5159d13599d5328e282dd7e Mon Sep 17 00:00:00 2001 From: Mark Duckworth <1124037+MarkDuckworth@users.noreply.github.com> Date: Mon, 22 Apr 2024 15:01:44 -0600 Subject: [PATCH 4/4] Fix typo --- .../firestore/src/platform/browser/webchannel_connection.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firestore/src/platform/browser/webchannel_connection.ts b/packages/firestore/src/platform/browser/webchannel_connection.ts index 8b7f8b176d4..52d6aa712cd 100644 --- a/packages/firestore/src/platform/browser/webchannel_connection.ts +++ b/packages/firestore/src/platform/browser/webchannel_connection.ts @@ -411,7 +411,7 @@ export class WebChannelConnection extends RestConnection { } else { logWarn( LOG_TAG, - `\`STAT_EVENT: RPC '${rpcName}' stream ${streamId} event ${event.stat}` + `STAT_EVENT: RPC '${rpcName}' stream ${streamId} event ${event.stat}` ); } });