From 843aae01c93b0b8d40b3f3241d67f471575dc2e3 Mon Sep 17 00:00:00 2001 From: Mathias Jakobsen Date: Fri, 10 Jul 2026 11:27:46 +0100 Subject: [PATCH] Merge pull request #35350 from overleaf/mj-up-timeouts [web] Increase reconnection window in editor GitOrigin-RevId: e6ffb4ecda170eb171455a9c692900ce71309c88 --- .../app/src/Features/Project/ProjectController.mjs | 1 + .../ide-react/context/unsaved-docs-context.tsx | 8 +++++++- .../js/features/ide-react/editor/share-js-doc.ts | 11 ++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/services/web/app/src/Features/Project/ProjectController.mjs b/services/web/app/src/Features/Project/ProjectController.mjs index 69b0a4b123..8e58664d33 100644 --- a/services/web/app/src/Features/Project/ProjectController.mjs +++ b/services/web/app/src/Features/Project/ProjectController.mjs @@ -510,6 +510,7 @@ const _ProjectController = { 'group-link-sharing', 'compile-with-checkpoint', 'themed-modals', + 'intermittent-connection-improvements', ].filter(Boolean) const getUserValues = async userId => diff --git a/services/web/frontend/js/features/ide-react/context/unsaved-docs-context.tsx b/services/web/frontend/js/features/ide-react/context/unsaved-docs-context.tsx index 746c757137..1dfe9a5d01 100644 --- a/services/web/frontend/js/features/ide-react/context/unsaved-docs-context.tsx +++ b/services/web/frontend/js/features/ide-react/context/unsaved-docs-context.tsx @@ -12,8 +12,14 @@ import { useEditorManagerContext } from '@/features/ide-react/context/editor-man import { useIdeReactContext } from '@/features/ide-react/context/ide-react-context' import { PermissionsLevel } from '@/features/ide-react/types/permissions' import useEventListener from '@/shared/hooks/use-event-listener' +import { isSplitTestEnabled } from '@/utils/splitTestUtils' -const MAX_UNSAVED_SECONDS = 30 // lock the editor after this time if unsaved +const intermittentConnectionImprovementsEnabled = isSplitTestEnabled( + 'intermittent-connection-improvements' +) + +// lock the editor after this time if unsaved +const MAX_UNSAVED_SECONDS = intermittentConnectionImprovementsEnabled ? 600 : 30 type UnsavedDocsContextValue = { unsavedDocs: Map diff --git a/services/web/frontend/js/features/ide-react/editor/share-js-doc.ts b/services/web/frontend/js/features/ide-react/editor/share-js-doc.ts index ab1b133a91..6c972bb42f 100644 --- a/services/web/frontend/js/features/ide-react/editor/share-js-doc.ts +++ b/services/web/frontend/js/features/ide-react/editor/share-js-doc.ts @@ -29,13 +29,22 @@ import { RawEditOperation, } from 'overleaf-editor-core/lib/types' import { HistoryOTShareDoc } from '../../../../../types/share-doc' +import { isSplitTestEnabled } from '@/utils/splitTestUtils' + +const intermittentConnectionImprovementsEnabled = isSplitTestEnabled( + 'intermittent-connection-improvements' +) // All times below are in milliseconds const SINGLE_USER_FLUSH_DELAY = 2000 const MULTI_USER_FLUSH_DELAY = 500 const INFLIGHT_OP_TIMEOUT = 5000 // Retry sending ops after 5 seconds without an ack const WAIT_FOR_CONNECTION_TIMEOUT = 500 -const FATAL_OP_TIMEOUT = 45000 +const FATAL_OP_TIMEOUT = intermittentConnectionImprovementsEnabled + ? // 10 minutes + 600_000 + : // 45 seconds + 45_000 const RECENT_ACK_LIMIT = 2 * SINGLE_USER_FLUSH_DELAY type Update = Record