overleaf/services/filestore
Jakob Ackermann 0db4a17a14 [HealthCheckController] use fs.copyFile instead of fs-extra.copy
the fs-extra method has a HUGE overhead of JS code and also syscalls for
 no particular benefit in this case: just copy the tiny.pdf file.

Here is an overview of the major operations: paths are relative to
  https://github.com/jprichardson/node-fs-extra/blob/1.0.0

We start in /lib/copy/copy.js
- sys: check that the source file exists
- sys: check that the source file has an existing parent directory?!
Continue in /lib/copy/ncp.js
- sys: more stat calls on both source and dest to determine permissions
- read/write streams to pipe the file content through the process
- sys: chmod on the destination to match the source permissions

What we actually need is a call to the binding and let node/the os
 figure out the best way to copy the contents.

Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2020-03-02 17:02:35 +01:00
..
.github
app/js [HealthCheckController] use fs.copyFile instead of fs-extra.copy 2020-03-02 17:02:35 +01:00
config Update config/settings.defaults.coffee 2020-02-18 10:24:29 +00:00
firejail
template_files
test fix settings unit test 2020-02-28 15:27:29 +00:00
uploads
user_files
.dockerignore
.eslintrc Revert "Merge pull request #91 from overleaf/revert-78-spd-migration-persistor" 2020-02-17 14:04:42 +00:00
.gitignore
.nvmrc
.prettierignore
.prettierrc
app.js Write to error log on unhandled rejection/exception 2020-02-27 10:33:48 +00:00
buildscript.txt
docker-compose.ci.yml
docker-compose.yml
Dockerfile
install_deps.sh
Jenkinsfile
LICENSE
Makefile
nodemon.json
package-lock.json [HealthCheckController] use fs.copyFile instead of fs-extra.copy 2020-03-02 17:02:35 +01:00
package.json [HealthCheckController] use fs.copyFile instead of fs-extra.copy 2020-03-02 17:02:35 +01:00
README.md
tiny.pdf

overleaf/filestore

An API for CRUD operations on binary files stored in S3

filestore acts as a proxy between the CLSIs and (currently) Amazon S3 storage, presenting a RESTful HTTP interface to the CLSIs on port 3009 by default. Urls are mapped to node functions in https://github.com/overleaf/filestore/blob/master/app.coffee . URLs are of the form:

  • /project/:project_id/file/:file_id
  • /template/:template_id/v/:version/:format
  • /project/:project_id/public/:public_file_id
  • /project/:project_id/size
  • /bucket/:bucket/key/*
  • /heapdump
  • /shutdown
  • /status - returns filestore sharelatex up or server is being shut down (HTTP 500)
  • /health_check

License

The code in this repository is released under the GNU AFFERO GENERAL PUBLIC LICENSE, version 3. A copy can be found in the LICENSE file.

Copyright (c) Overleaf, 2014-2019.