From 01f36ea41011fdd6ec77e4b1a799193bef58aa91 Mon Sep 17 00:00:00 2001 From: Alexander <74536256+alexander-at-t@users.noreply.github.com> Date: Wed, 29 Jan 2025 02:00:30 +0200 Subject: [PATCH] Fix negative offset of reconnect delay (#8718) (#8719) RTDB Fix negative offset of reconnect delay. Fixes #8718. --- .changeset/chilled-clocks-remember.md | 6 ++++++ packages/database/src/core/PersistentConnection.ts | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/chilled-clocks-remember.md diff --git a/.changeset/chilled-clocks-remember.md b/.changeset/chilled-clocks-remember.md new file mode 100644 index 00000000000..cbc0ec71a1f --- /dev/null +++ b/.changeset/chilled-clocks-remember.md @@ -0,0 +1,6 @@ +--- +"@firebase/database": patch +'firebase': patch +--- + +Fix a potential for a negative offset when calculating last reconnect times. This could cause lengthy reconnect delays in some scenarios. Fixes #8718. diff --git a/packages/database/src/core/PersistentConnection.ts b/packages/database/src/core/PersistentConnection.ts index 4e12b37088b..4070c4fea98 100644 --- a/packages/database/src/core/PersistentConnection.ts +++ b/packages/database/src/core/PersistentConnection.ts @@ -797,8 +797,10 @@ export class PersistentConnection extends ServerActions { this.lastConnectionEstablishedTime_ = null; } - const timeSinceLastConnectAttempt = - new Date().getTime() - this.lastConnectionAttemptTime_; + const timeSinceLastConnectAttempt = Math.max( + 0, + new Date().getTime() - this.lastConnectionAttemptTime_ + ); let reconnectDelay = Math.max( 0, this.reconnectDelay_ - timeSinceLastConnectAttempt