From 42a1211ba717765bfc40adcc9e71bad266a472f7 Mon Sep 17 00:00:00 2001 From: Miguel Serrano <mserranom@users.noreply.github.com> Date: Wed, 7 Apr 2021 18:06:41 +0200 Subject: [PATCH] Merge pull request #3888 from overleaf/jpa-hotfix-soft-failure-for-missing-deleted-docs [EditorHttpController] joinProject: ignore err when fetching deletedDocs GitOrigin-RevId: e2e2e5172de04cebb4a951739ac4222645fdd289 --- .../Features/Editor/EditorHttpController.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/services/web/app/src/Features/Editor/EditorHttpController.js b/services/web/app/src/Features/Editor/EditorHttpController.js index 9235057dbe..6d74bffa78 100644 --- a/services/web/app/src/Features/Editor/EditorHttpController.js +++ b/services/web/app/src/Features/Editor/EditorHttpController.js @@ -14,6 +14,7 @@ const Errors = require('../Errors/Errors') const HttpErrorHandler = require('../Errors/HttpErrorHandler') const ProjectEntityUpdateHandler = require('../Project/ProjectEntityUpdateHandler') const DocstoreManager = require('../Docstore/DocstoreManager') +const logger = require('logger-sharelatex') const { expressify } = require('../../util/promises') module.exports = { @@ -100,9 +101,21 @@ async function _buildJoinProjectView(req, projectId, userId) { if (project == null) { throw new Errors.NotFoundError('project not found') } - const deletedDocsFromDocstore = await DocstoreManager.promises.getAllDeletedDocs( - projectId - ) + let deletedDocsFromDocstore = [] + try { + deletedDocsFromDocstore = await DocstoreManager.promises.getAllDeletedDocs( + projectId + ) + } catch (err) { + // The query in docstore is not optimized at this time and fails for + // projects with many very large, deleted documents. + // Not serving the user with deletedDocs from docstore may cause a minor + // UI issue with deleted files that are no longer available for restore. + logger.warn( + { err, projectId }, + 'soft-failure when fetching deletedDocs from docstore' + ) + } const members = await CollaboratorsGetter.promises.getInvitedMembersWithPrivilegeLevels( projectId )