Jakob Ackermann
2b15729658
[misc] promisify FileHandler and remove dependency on async
...
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2020-03-02 18:23:17 +01:00
Jakob Ackermann
32557ab1d7
[SafeExec] replace _.once with lodash.once
2020-03-02 17:08:42 +01:00
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
Simon Detheridge
8acc9ef0ae
Make S3 partSize a setting
2020-02-17 14:06:15 +00:00
Simon Detheridge
7c4bf97a7f
Avoid fetching file a second time when source md5 can't be fetched
2020-02-17 14:06:05 +00:00
Simon Detheridge
2f2a819b74
Re-fetch file to calculate md5 if etag is not in correct format
2020-02-17 14:05:43 +00:00
Simon Detheridge
5adfb3e2c0
Use large upload chunks
2020-02-17 14:05:31 +00:00
Simon Detheridge
4e507197fc
Revert "Merge pull request #91 from overleaf/revert-78-spd-migration-persistor"
...
This reverts commit 0cce792604c258538cf012486e7329fa1be7da0f, reversing
changes made to 08b606e22f855121b2d8a2832a5d7e2f45836c3f.
2020-02-17 14:04:42 +00:00
Simon Detheridge
df2ddbe0e1
Revert "Add Migration Persistor, to send missing file requests to a fallback persistor"
2020-02-14 14:26:33 +00:00
Simon Detheridge
e4926e09a7
Move error handler to be the last middleware
2020-02-14 10:58:46 +00:00
Simon Detheridge
44fbc6a733
Merge pull request #82 from overleaf/spd-error-handler-error
...
Fix log info assignment in error handler
2020-02-14 09:18:16 +00:00
Simon Detheridge
3b011258d2
Tidy up md5 hash generation
2020-02-12 13:27:12 +00:00
Simon Detheridge
49ad408b30
Remove unused imports and format correctly
2020-02-12 13:27:12 +00:00
Simon Detheridge
93cd55fb79
Refactor persistors to use a helper for common things
2020-02-12 13:27:12 +00:00
Simon Detheridge
9e0b378948
Remove minipass as dependency and refactor to make things clearer
2020-02-12 13:21:52 +00:00
Simon Detheridge
5d5d325691
Preserve all error information when cleanup of copied file fails
2020-02-12 13:21:52 +00:00
Simon Detheridge
b4b7fd226e
Add mechanisms to transfer files with md5-based integrity checks
...
Fix error in settings and tidy up tests
Remove unused variable declaration
Remove .only from tests and update eslint rules to catch it in future
Use to catch errors more safely getting md5 hash
Avoid unnecessary call to S3 to get md5 response
2020-02-12 13:21:52 +00:00
Simon Detheridge
2625e03a31
Add MigrationPersistor for sending 404 requests to a fallback persistor
2020-02-12 13:19:48 +00:00
Simon Detheridge
f877f51775
Rename *PersistorManager to *Persistor
2020-02-12 13:19:48 +00:00
Simon Detheridge
e3613e52db
Fix log info assignment in error handler
2020-02-12 10:34:56 +00:00
Simon Detheridge
035364b62e
Fix RequestLogger object lifecycle
2020-01-14 17:15:01 +00:00
Simon Detheridge
28fb998719
Refactor request logger into a class
2020-01-14 12:02:39 +00:00
Simon Detheridge
9615a06e0f
Improve logging middleware to add info methods to request object
2020-01-10 17:22:06 +00:00
Simon Detheridge
f40fbe77aa
Simplify logging to log only once per http request
2020-01-10 15:41:36 +00:00
Simon Detheridge
e331a3130c
Handle AccessDenied and stream-premature-close errors
...
These errors tend to occur as part of normal operation and should not generate `logger.err` messages
2020-01-09 14:15:01 +00:00
Simon Detheridge
d8470d4a59
Use correct object path for s3BucketCreds
2020-01-08 11:32:05 +00:00
Simon Detheridge
3bf51cac67
Improve naming on internal '_client' method and use Map over object
2020-01-08 09:17:30 +00:00
Simon Detheridge
80d41cf51b
Move bucket-specific file endpoint into FileController
2020-01-07 15:05:51 +00:00
Simon Detheridge
6cc5d94f13
Re-add bucket-specific credentials support for S3
2020-01-07 10:55:00 +00:00
Simon Detheridge
ffd002dc76
Add explanatory comment
2020-01-07 09:30:30 +00:00
Simon Detheridge
b642b3cf3a
Rename incorrectly-named 'getDirectorySize' method
2020-01-07 09:30:30 +00:00
Simon Detheridge
a6d9d34fe3
Configure PersistorManager to use the new S3 manager for 'aws-sdk'
2020-01-07 09:30:30 +00:00
Simon Detheridge
2ca74fdf15
Cleanup and refactor S3PersistorManager to use aws-sdk only
2020-01-07 09:30:30 +00:00
Simon Detheridge
473aea4e60
Remove AWSSDKPersistorManager
2020-01-07 09:30:30 +00:00
Simon Detheridge
e27cf4db7b
Pass pipeline errors onto 'next' error handler
2020-01-07 09:30:30 +00:00
Simon Detheridge
87b51d0c35
Remove old exception-handling and shutdown-related mechanisms
2020-01-07 09:30:28 +00:00
Simon Detheridge
74b480fc55
Post-decaf cleanup of app.js
2020-01-07 09:29:33 +00:00
Simon Detheridge
85d3c0a852
Remove old exception-handling and shutdown-related mechanisms
2020-01-07 09:27:02 +00:00
Simon Detheridge
6a679023d3
Fix order of .status().send()
2020-01-07 09:27:02 +00:00
Simon Detheridge
fce275e1d4
Post-decaf cleanup of app.js
2020-01-07 09:27:02 +00:00
Simon Detheridge
0329c759dc
Remove wrapper function in PersistorManager
2020-01-07 09:26:43 +00:00
Simon Detheridge
dbfacce988
Post-decaf cleanup of PersistorManager
2020-01-07 09:26:43 +00:00
Simon Detheridge
ec80052d9a
Decaf cleanup of FileController
...
Remove deprecated res.send
2020-01-07 09:26:23 +00:00
Simon Detheridge
fccb288985
Add comment regarding deleteDirectory being internal-only
2020-01-07 09:26:01 +00:00
Simon Detheridge
f1b6b35c69
Throw errors more consistently in FSPersistorManager
2020-01-07 09:26:00 +00:00
Simon Detheridge
25f1c2bfc4
Delete temporary file when error in writing to stream
2020-01-07 09:26:00 +00:00
Simon Detheridge
21ba083877
Use 'glob' to determine 'directory' size.
...
Check for filtered directory paths in all tests.
2020-01-07 09:26:00 +00:00
Simon Detheridge
ce90292394
Decaf cleanup for FSPersistorManager
2020-01-07 09:26:00 +00:00
Simon Detheridge
006f84abeb
Decaf and promisify ImageOptimiser
2020-01-07 09:24:29 +00:00
Simon Detheridge
42adc59d01
Clean up and promisify health-check controller and KeyBuilder
2020-01-07 09:23:41 +00:00
Simon Detheridge
ac2d05ecb3
Remove unnecessary logging from FileConverter
2020-01-07 09:22:53 +00:00
Simon Detheridge
b6a1ea6a30
Cleanup and promisify FileConverter
2020-01-07 09:22:53 +00:00
Simon Detheridge
a216be5fd3
Improve error handling in FileHandler
2020-01-07 09:18:59 +00:00
Simon Detheridge
27aaff7843
Decaf cleanup for FileHandler and LocalFileWriter
...
Simplified code and tests where possible
2020-01-07 09:18:56 +00:00
Simon Detheridge
eacad77112
Cleanup SafeExec
2019-12-19 15:42:46 +00:00
Simon Detheridge
e06c03e536
Fix decaf error in FSPersistorManager
2019-12-16 11:19:56 +00:00
Simon Detheridge
6225f2f236
Prettier: convert app/js decaffeinated files to Prettier format
2019-12-16 11:19:36 +00:00
Simon Detheridge
3718c90c7a
Rename app/coffee dir to app/js
2019-12-16 10:54:08 +00:00
decaffeinate
fcbb13b5bf
decaffeinate: Run post-processing cleanups on AWSSDKPersistorManager.coffee and 13 other files
2019-12-16 10:54:06 +00:00
decaffeinate
6bd8452f19
decaffeinate: Convert AWSSDKPersistorManager.coffee and 13 other files to JS
2019-12-16 10:54:03 +00:00
decaffeinate
8d2c87420e
decaffeinate: Rename AWSSDKPersistorManager.coffee and 13 other files from .coffee to .js
2019-12-16 10:53:59 +00:00
Jakob Ackermann
ed97fcfcd0
[logging] do not overwrite the logger name
...
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-12-16 10:53:34 +00:00
Jakob Ackermann
c5e1584fcc
[FSPersistorManager] fix the stream opening for node10+
...
Attaching a `readable` listener causes the stream to hang otherwise.
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-12-16 10:53:23 +00:00
Simon Detheridge
dab44f6fec
Merge branch 'master' into logging/keep-logger-name
2019-12-16 09:42:18 +00:00
Simon Detheridge
32b7f25404
Merge pull request #49 from das7pad/misc/node10plus-support
...
[misc] add support for node 10+
2019-12-16 09:39:00 +00:00
Simon Detheridge
6f326d5650
Use SSL setting based on url protocol
2019-12-09 17:41:20 +00:00
Simon Detheridge
48aa141591
Add metric for s3 ingress
2019-12-09 17:06:00 +00:00
Simon Detheridge
1d1106bc67
Add metric for s3 egress
2019-12-09 17:06:00 +00:00
Simon Detheridge
c01603b1e7
Support custom S3 endpoints
2019-12-09 17:06:00 +00:00
Simon Detheridge
86b9e4b53a
Rename request -> s3Request to prevent overwriting main import
2019-12-09 17:05:58 +00:00
Brian Gough
2ec38068aa
add comments about aws-sdk and s3 backends
2019-12-06 14:35:13 +00:00
Eric Mc Sween
7d900b57bf
Fix createUnbufferedStream() function call
...
In 49a21155f642670dfea264ac73fb60241f37cb87, I managed to incorrectly
write the `createUnbufferedStream()` function from the AWS SDK as
`getUnbufferedStream()` and to consistently use that naming in the unit
tests.
This commit fixes that. I have tested again on S3.
2019-06-19 12:58:17 -04:00
Eric Mc Sween
f2521a29b9
Use AWS SDK for getFileStream()
...
The AWS SDK has a retry strategy to deal with rate limiting or transient
unavailability of S3. We hope it will reduce our error rates.
2019-06-19 08:18:11 -04:00
Eric Mc Sween
3575c89d03
Return file size on HEAD request
...
This will be used by the file preview feature when it gets partial
content.
2019-06-17 08:23:59 -04:00
Jakob Ackermann
a79adcd325
[logging] do not overwrite the logger name
...
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-05-02 12:48:43 +02:00
Jakob Ackermann
c59a3db4e8
[FSPersistorManager] fix the stream opening for node10+
...
Attaching a `readable` listener causes the stream to hang otherwise.
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-05-02 02:47:53 +02:00
Henry Oswald
2adae20368
remove a console.log
2019-02-06 11:43:11 +00:00
Henry Oswald
5eec00db51
don't run conversions test when disabled
2019-02-05 14:06:51 +00:00
Henry Oswald
3fccf79ca8
cleanup
2019-02-05 12:50:08 +00:00
Henry Oswald
19007befb2
Merge branch 'master' into ho-docker
2019-02-01 16:26:45 +00:00
Brian Gough
9d93eee3e8
return a 404 error (instead of a 500) when copying a missing file
2019-01-09 10:31:59 +00:00
Henry Oswald
3614f217e6
add enableConversions flag to disable conversions which we can't do on
...
k8
2019-01-07 15:54:24 +00:00
Christopher Hoskin
aab5a1af6a
Merge branch 'master' into csh-ho-docker
2019-01-02 09:51:35 +00:00
Brian Gough
cf12ec1154
use the aws sdk to copy files in S3PersistorManager
...
to work around problems with knox
2018-12-20 16:11:18 +00:00
Brian Gough
8951f297aa
Merge pull request #37 from sharelatex/bg-reduce-logging-of-not-found-errors
...
reduce logging of not found errors
2018-11-13 14:06:19 +00:00
Brian Gough
0d6de10b5c
Merge pull request #34 from sharelatex/bg-make-backends-consistent
...
make filestore backends consistent
2018-11-13 10:12:18 +00:00
Brian Gough
23a6d6e81d
consider 403 and 404 as NotFound errors
2018-11-09 14:05:38 +00:00
Brian Gough
69b164092c
suppress unnecessary error logging for NotFound
2018-11-09 14:05:38 +00:00
Brian Gough
8744b3aa4e
serve file from disk to avoid read-after-write inconsistency
2018-11-08 15:09:34 +00:00
Brian Gough
40ac59090b
make backends consistent by deleting temporary files
2018-11-07 16:22:09 +00:00
Henry Oswald
38f565d35f
logout settings
2018-09-28 15:53:57 +01:00
Henry Oswald
aacb54d54c
Merge branch 'master' into ho-docker
2018-09-14 17:16:18 +01:00
Henry Oswald
089bf3e084
seperate the standard s3 creds from the bucket s3 creds
2018-07-10 14:17:37 +01:00
Michael Mazour
7feafccf31
Amend: safely navigate to bucket credentials
2018-07-06 09:28:09 +01:00
Michael Mazour
03033409c6
Amend: remove unused params
2018-07-06 09:12:59 +01:00
Michael Mazour
336a38ec1e
Amend: scrub secrets from logs
...
Calls to `getFile` can now include S3 credentials in `opts`, so sanitize before writing to opts to log.
2018-07-04 16:41:31 +01:00
Michael Mazour
600ab3ce67
Amend: remove problematic ampersand
2018-07-04 16:39:41 +01:00
Michael Mazour
cfbf0d81ba
Amend: fix params retrieval
2018-07-04 12:11:09 +01:00
Michael Mazour
ece650741a
Amend per several review comments
...
- Removed unused vars
- Label the metric with the bucket name
2018-07-04 12:02:09 +01:00
Michael Mazour
feca8933f1
Add endpoint for arbitrary bucket fetch
...
Add `/bucket/:bucket/key/*`, which fetches the file from the given bucket at the given path. Uses auth stored at `settings.filestore.s3.{{bucketName}}` if present, and otherwise default auth.
2018-07-04 11:22:36 +01:00