|
|
@@ -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
|
|
|
)
|