Merge pull request #12848 from overleaf/bg-fix-path-exception
add exception handling for path.join in ProjectEntityHandler GitOrigin-RevId: dad305057fd6b2821525ca5b6d1933824989e241
This commit is contained in:
@@ -717,7 +717,12 @@ const ClsiManager = {
|
||||
},
|
||||
|
||||
getContentFromDocUpdaterIfMatch(projectId, project, options, callback) {
|
||||
const projectStateHash = ClsiStateManager.computeHash(project, options)
|
||||
let projectStateHash
|
||||
try {
|
||||
projectStateHash = ClsiStateManager.computeHash(project, options)
|
||||
} catch (err) {
|
||||
return callback(err)
|
||||
}
|
||||
DocumentUpdaterHandler.getProjectDocsIfMatch(
|
||||
projectId,
|
||||
projectStateHash,
|
||||
@@ -763,7 +768,16 @@ const ClsiManager = {
|
||||
docUpdaterDocs,
|
||||
callback
|
||||
) {
|
||||
const docPath = ProjectEntityHandler.getAllDocPathsFromProject(project)
|
||||
let docPath
|
||||
try {
|
||||
docPath = ProjectEntityHandler.getAllDocPathsFromProject(project)
|
||||
} catch (err) {
|
||||
return callback(
|
||||
OError.tag(err, 'Failed to get all doc paths from project', {
|
||||
projectId,
|
||||
})
|
||||
)
|
||||
}
|
||||
const docs = {}
|
||||
for (const doc of docUpdaterDocs || []) {
|
||||
const path = docPath[doc._id]
|
||||
|
||||
@@ -394,8 +394,13 @@ const ProjectController = {
|
||||
if (err != null) {
|
||||
return next(err)
|
||||
}
|
||||
const { docs, files } =
|
||||
ProjectEntityHandler.getAllEntitiesFromProject(project)
|
||||
let docs, files
|
||||
try {
|
||||
;({ docs, files } =
|
||||
ProjectEntityHandler.getAllEntitiesFromProject(project))
|
||||
} catch (err) {
|
||||
return next(err)
|
||||
}
|
||||
const entities = docs
|
||||
.concat(files)
|
||||
// Sort by path ascending
|
||||
|
||||
@@ -30,12 +30,16 @@ const ProjectEntityHandler = {
|
||||
for (const doc of iterablePaths(folder, 'docs')) {
|
||||
const content = docContents[doc._id.toString()]
|
||||
if (content != null) {
|
||||
docs[path.join(folderPath, doc.name)] = {
|
||||
_id: doc._id,
|
||||
name: doc.name,
|
||||
lines: content.lines,
|
||||
rev: content.rev,
|
||||
folder,
|
||||
try {
|
||||
docs[path.join(folderPath, doc.name)] = {
|
||||
_id: doc._id,
|
||||
name: doc.name,
|
||||
lines: content.lines,
|
||||
rev: content.rev,
|
||||
folder,
|
||||
}
|
||||
} catch (err) {
|
||||
return callback(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -55,7 +59,11 @@ const ProjectEntityHandler = {
|
||||
for (const { path: folderPath, folder } of folders) {
|
||||
for (const file of iterablePaths(folder, 'fileRefs')) {
|
||||
if (file != null) {
|
||||
files[path.join(folderPath, file.name)] = { ...file, folder }
|
||||
try {
|
||||
files[path.join(folderPath, file.name)] = { ...file, folder }
|
||||
} catch (err) {
|
||||
return callback(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -71,9 +79,12 @@ const ProjectEntityHandler = {
|
||||
if (project == null) {
|
||||
return callback(new Errors.NotFoundError('project not found'))
|
||||
}
|
||||
|
||||
const entities = ProjectEntityHandler.getAllEntitiesFromProject(project)
|
||||
callback(null, entities)
|
||||
try {
|
||||
const entities = ProjectEntityHandler.getAllEntitiesFromProject(project)
|
||||
callback(null, entities)
|
||||
} catch (err) {
|
||||
callback(err)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -104,8 +115,12 @@ const ProjectEntityHandler = {
|
||||
if (project == null) {
|
||||
return callback(Errors.NotFoundError('no project'))
|
||||
}
|
||||
const docPaths = ProjectEntityHandler.getAllDocPathsFromProject(project)
|
||||
callback(null, docPaths)
|
||||
try {
|
||||
const docPaths = ProjectEntityHandler.getAllDocPathsFromProject(project)
|
||||
callback(null, docPaths)
|
||||
} catch (err) {
|
||||
callback(err)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -186,12 +201,16 @@ const ProjectEntityHandler = {
|
||||
return null
|
||||
}
|
||||
}
|
||||
const docPath = recursivelyFindDocInFolder(
|
||||
'/',
|
||||
docId,
|
||||
project.rootFolder[0]
|
||||
)
|
||||
callback(null, docPath)
|
||||
try {
|
||||
const docPath = recursivelyFindDocInFolder(
|
||||
'/',
|
||||
docId,
|
||||
project.rootFolder[0]
|
||||
)
|
||||
callback(null, docPath)
|
||||
} catch (err) {
|
||||
callback(err)
|
||||
}
|
||||
},
|
||||
|
||||
_getAllFolders(projectId, callback) {
|
||||
@@ -202,8 +221,12 @@ const ProjectEntityHandler = {
|
||||
if (project == null) {
|
||||
return callback(new Errors.NotFoundError('no project'))
|
||||
}
|
||||
const folders = ProjectEntityHandler._getAllFoldersFromProject(project)
|
||||
callback(null, folders)
|
||||
try {
|
||||
const folders = ProjectEntityHandler._getAllFoldersFromProject(project)
|
||||
callback(null, folders)
|
||||
} catch (err) {
|
||||
callback(err)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
@@ -1396,8 +1396,13 @@ const ProjectEntityUpdateHandler = {
|
||||
return callback(error)
|
||||
}
|
||||
|
||||
let { docs, files, folders } =
|
||||
ProjectEntityHandler.getAllEntitiesFromProject(project)
|
||||
let docs, files, folders
|
||||
try {
|
||||
;({ docs, files, folders } =
|
||||
ProjectEntityHandler.getAllEntitiesFromProject(project))
|
||||
} catch (error) {
|
||||
return callback(error)
|
||||
}
|
||||
// _checkFileTree() must be passed the folders before docs and
|
||||
// files
|
||||
ProjectEntityUpdateHandler._checkFiletree(
|
||||
@@ -1489,7 +1494,11 @@ const ProjectEntityUpdateHandler = {
|
||||
// the case only because getAllEntitiesFromProject() returns folders
|
||||
// in that order and resyncProjectHistory() calls us with the folders
|
||||
// first.
|
||||
adjustPathsAfterFolderRename(entity.path, newPath)
|
||||
try {
|
||||
adjustPathsAfterFolderRename(entity.path, newPath)
|
||||
} catch (error) {
|
||||
return callback(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user