Commit graph

536 commits

Author SHA1 Message Date
Jakob Ackermann
e34f17a352 [misc] creating a redis client with redis-sentinel opts throws an error 2020-11-11 11:31:44 +00:00
Jakob Ackermann
bcd5abadce [misc] version bump to 2.0.0 2020-11-10 10:46:42 +00:00
Jakob Ackermann
41aa5ec876 [misc] rename package to @overleaf/redis-wrapper 2020-11-10 10:46:41 +00:00
Jakob Ackermann
d7eb8c7ecf [misc] refresh package.json
- trim down the files for publishing
- drop sentinel from description
- Overleaf is the new author
- add repository reference
2020-11-10 10:46:41 +00:00
Jakob Ackermann
aabe2d18b9 [misc] rewrite: squash history
- promisify
- merge health check for single node and cluster
- replace the first multi with simple SET in health check
- reworked health check with o-error context/stack-traces for failures
- drop console.error on health check timeout, consumer logs the error
- cleanup unwrapping of ioredis multi result
- Promise support for multi.exec

This has been squashed from das7pad s fork.
REF: b3dd8c5cf4cc6482fd450e6bb67013508844f93f
2020-11-10 10:34:06 +00:00
Jakob Ackermann
ccf4bb1e0e [misc] test/scripts: use logger-sharelatex for logging as in production 2020-11-10 10:15:03 +00:00
Jakob Ackermann
d827b521c6 [misc] test/unit: loosely match the passed redis options
The rewrite will pass a cloned object through.
2020-11-10 10:10:22 +00:00
Jakob Ackermann
4aebc1b0b6 [misc] rewrite: free functions 2020-11-10 10:10:22 +00:00
Jakob Ackermann
da8bef821b [misc] decaffeinate: decaffeinate module 2020-11-10 10:10:21 +00:00
Jakob Ackermann
c973c5b188 [misc] decaffeinate: rename 2/2 2020-11-10 10:10:21 +00:00
Jakob Ackermann
45bf2abb14 [misc] decaffeinate: rename 1/2 2020-11-10 10:10:20 +00:00
Jakob Ackermann
830d6275b3 [misc] add scripts for testing redis cluster 2020-11-10 10:10:06 +00:00
Jakob Ackermann
7b69cc42c9 [misc] decaffeinate tests: decaffeinate unit tests 2020-11-09 17:52:29 +00:00
Jakob Ackermann
7210b3dfed [misc] decaffeinate tests: decaffeinate standalone script 2020-11-09 17:52:20 +00:00
Jakob Ackermann
0a2171e9f0 [misc] decaffeinate tests: rename 2020-11-09 16:57:08 +00:00
Jakob Ackermann
1a090b7b46 [misc] add editor config, eslint, prettier boiler plate
versions taken from o-error (prettier-eslint-cli from real-time)
2020-11-09 16:56:56 +00:00
Jakob Ackermann
7eccce2ed0 [misc] reference module via js/loose file extension 2020-11-09 16:16:11 +00:00
Jakob Ackermann
69df7f5bb3 [misc] move test scripts into test/ tree 2020-11-09 16:11:11 +00:00
Jakob Ackermann
39809562fd [misc] use plain mocha for testing and bump devDependencies 2020-11-09 16:03:33 +00:00
Jakob Ackermann
dddb431034 [misc] drop unused async
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2020-11-09 16:02:30 +00:00
Jakob Ackermann
a53eef5e3d [healthCheck] bring back support for redis cluster
Assume `cluster-require-full-coverage=yes` is set for the redis cluster,
 which is the default value.

We are writing into a single hash slot, resulting in a partial health
 check only.
The 'cluster-require-full-coverage=yes' blocks writes as soon as any
 hash slot is not covered by an active primary.
We are leveraging the health check build into the redis cluster topology
 to bring the scope of the single read/write/delete to the full cluster.

REF: 1b3566d6c830289dc826da1d13b75d68205d8dec
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2020-11-09 16:02:29 +00:00
Jakob Ackermann
18fa184230 [misc] drop references for 'redis' package from unit tests 2020-11-09 16:02:25 +00:00
Jakob Ackermann
90ad28c51c [misc] drop support for redis-sentinel 2020-11-09 15:59:28 +00:00
Jakob Ackermann
2d1c84ea2e [misc] fix collection of open sockets
```
> require('http').globalAgent.sockets
{ 'HOST:PORT:': [{ ... }, { ... }] }
```

- `new URL('http://HOST:PORT:')` throws
  -> test suite `open_sockets`
- gauges were not cleaned up after no agents were present for a given
   key. This lead to continuous emission of the previous connection
   count for a given hostname, following the completion of all requests.
  -> test suite `when all requests complete`
2020-11-06 15:16:14 +00:00
Eric Mc Sween
142d9a5716 3.4.0 2020-10-30 07:39:47 -04:00
Eric Mc Sween
20b3d5070c Export a configured prom-client
Metrics.initialize() and Metrics.configure() will configure the default
Prometheus registry with default "app" and "host" labels. The configured
prom-client module is available as Metrics.prom.
2020-10-29 09:49:55 -04:00
Christopher Hoskin
725478d95f Release 3.3.0 2020-10-27 14:02:21 +00:00
Christopher Hoskin
f874291998 Bump google-cloud trace-agent, debug-agent and profiler to latest 2020-10-26 17:40:18 +00:00
Christopher Hoskin
d4a649353f Commit package-lock.json 2020-10-26 17:33:43 +00:00
Christopher Hoskin
fedc3191b8 Bump node to 10.19 2020-10-26 17:33:24 +00:00
Eric Mc Sween
0fdfa706f7 Make 404 error handling on deletes more specific
The GCS persistor error handler ignores 404 errors on deletes. However,
the net is too wide cast, and 404 errors coming from the dual-bucket
lifecycle mechanism are also ignored.
2020-10-15 10:35:52 -04:00
Simon Detheridge
60931b86c3 Don't try to delete files if none are found in a directory 2020-10-13 09:53:19 +01:00
John Lees-Miller
9b739f1c7d Bump version to 3.1.0 2020-09-25 16:10:12 +01:00
Eric Mc Sween
9089d332ab Add a "unsignedUrls" option to the GCS persistor
This boolean option disables URL signing. Instead, getRedirectUrl()
returns the plain GCS download URL.
2020-09-22 15:59:13 -04:00
Eric Mc Sween
0fdbb2dcc0 Add .npmignore to avoid publishing config files 2020-09-17 10:44:24 -04:00
Eric Mc Sween
bd1a1dbabf 3.2.1 2020-09-17 10:40:34 -04:00
Eric Mc Sween
2f35db4087 Fix startup crash
Version 3.2.0 crashes on startup because it calls buildPromKey() without
arguments. To avoid this kind of obvious bug to happen again, I added
some basic acceptance tests.
2020-09-17 10:30:25 -04:00
John Lees-Miller
258cc08717 Add a limit on the number of tags, OError.maxTags (#13)
* Add OError.maxTags

* Tidy up package scripts and add a build script

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
2020-09-17 15:17:44 +01:00
Eric Mc Sween
c413f4d8a4 Fixed some function names in the docs 2020-09-15 16:13:58 -04:00
Eric Mc Sween
ec0441bc89 3.2.0 2020-09-15 08:37:05 -04:00
Eric Mc Sween
c05bd83e24 Add a separate configure() method
configure() sets options in the metrics module, but does not start the
default metrics collectors and the profiling agents.
2020-09-15 08:36:03 -04:00
Eric Mc Sween
3c9c17c22f Remove "using prometheus" log
We now always use prometheus
2020-09-11 15:59:38 -04:00
Eric Mc Sween
6f69fb4869 Decaf cleanup: move functions to top level 2020-09-11 15:59:38 -04:00
Eric Mc Sween
afecfd5212 Decaf cleanup: use default parameters 2020-09-11 15:59:38 -04:00
Eric Mc Sween
d7e4b3fe33 Decaf cleanup: unnecessary returns 2020-09-11 15:59:38 -04:00
Eric Mc Sween
6c020f6e54 Decaf cleanup: remove Array.from() 2020-09-11 15:59:38 -04:00
Eric Mc Sween
971a768c4e Install prettier and eslint 2020-09-11 15:59:33 -04:00
John Lees-Miller
ea2d76de51 Improve tagging for a (maybe) null error (#12)
* Document a way of handling an error that might be null

* Make typecheck strict

* Test some edge cases

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
2020-09-11 10:05:54 +01:00
Brian Gough
c530422f1e update package version to 3.1.0 2020-09-04 15:52:05 +01:00
Jakob Ackermann
71ba4150fe [misc] enable compression for the /metrics route 2020-09-04 15:32:48 +01:00