Commit graph

442 commits

Author SHA1 Message Date
Brian Gough
4ec82b1baa upgrade to local node:10.18.1 image 2020-02-04 15:02:15 +00:00
Simon Detheridge
4102aa0580 Add more detail to metric 2020-02-04 14:03:56 +00:00
Simon Detheridge
8e45a62e32 Handle ECONNRESET in the same way as EPIPE 2020-02-04 13:58:45 +00:00
Simon Detheridge
7663e9689e Merge pull request #91 from overleaf/spd-trycatch-all-the-things
Add try/catch around all client emissions
2020-02-04 13:21:49 +00:00
Simon Detheridge
fbff3fe727 Don't shut down on uncaught EPIPE 2020-02-04 12:56:43 +00:00
Simon Detheridge
9fd4699098 Merge remote-tracking branch 'origin/bg-avoid-emit-when-client-not-connected' into spd-trycatch-all-the-things 2020-02-04 12:35:35 +00:00
Simon Detheridge
216a977922 Add try/catch around all client emissions 2020-02-04 12:13:03 +00:00
Brian Gough
ebb83e4633 use diconnected property, not connected 2020-02-04 11:59:25 +00:00
Brian Gough
7380d523d5 avoid emitting when client not connected
the emit is happening asynchronously after the client list is computed,
so clients may have disconnected in the intervening time.
2020-02-04 11:39:37 +00:00
Brian Gough
e263d37476 pass the signal correctly to the shutdown handler 2020-02-04 11:14:53 +00:00
Brian Gough
1fc8cc44c3 log shutdown messages as warnings 2020-02-04 11:14:14 +00:00
Simon Detheridge
c7e2b99a7b Update hybi-16 patch to work with socket.io 0.9.19 2020-02-04 10:43:06 +00:00
Simon Detheridge
ef852dfa33 Update socket.io to latest patch release 2020-02-04 10:32:54 +00:00
Brian Gough
4f94110225 Merge pull request #84 from overleaf/spd-catch-errors
Bump to Node 10 and add error handlers for socket.io
2020-02-03 14:59:04 +00:00
Brian Gough
49a8e1214b use a separate field for client errors 2020-02-03 14:47:45 +00:00
Brian Gough
e04b6e1e49 Update app/coffee/Router.coffee
Co-Authored-By: Jakob Ackermann <das7pad@outlook.com>
2020-02-03 14:46:14 +00:00
Shane Kilkelly
e63c6f4395 Merge pull request #87 from overleaf/sk-restricted-users
Filter "comments" if restricted user.
2019-10-31 10:21:11 +00:00
Shane Kilkelly
6df88ebc49 Filter "comments" if restricted user. 2019-10-30 13:54:40 +00:00
Shane Kilkelly
403caa65e8 Revert "Revert "Track the isRestrictedUser flag on clients""
This reverts commit 651e392a7c644403f199e1b03e7494b61ce71d0c.
2019-10-30 13:52:36 +00:00
Nate Stemen
9a838bd071 bump build script to 1.1.24 2019-10-25 13:23:13 -04:00
Nate Stemen
3dc7c357a5 add public link to contributing docs 2019-10-25 13:22:58 -04:00
Simon Detheridge
925a8651c1 Revert "Track the isRestrictedUser flag on clients" 2019-10-22 10:17:38 +01:00
Simon Detheridge
c31c2d292d Merge pull request #81 from overleaf/sk-restricted-users
Track the `isRestrictedUser` flag on clients
2019-10-22 09:45:00 +01:00
Simon Detheridge
ce366fdbee Bump Dockerfile to node 10 2019-10-17 12:46:07 +01:00
Simon Detheridge
7543f2fcbd Catch errors from socket.io and attempt graceful cleanup 2019-10-17 12:45:56 +01:00
Brian Gough
dff4d66209 Merge pull request #83 from overleaf/bg-upgrade-ioredis
upgrade ioredis to v4.14.1
2019-10-14 11:18:45 +01:00
Brian Gough
f028148fe2 upgrade ioredis to v4.14.1 2019-10-14 11:10:20 +01:00
Shane Kilkelly
2cc2be3d9c send messages to clients with concurrency of 2 2019-10-11 10:01:21 +01:00
Shane Kilkelly
06aa578bdc Make it an error when we get no data from joinProject 2019-10-11 09:57:16 +01:00
Simon Detheridge
85b23d7da7 Add maxRetriesPerRequest setting for redis 2019-10-10 16:56:58 +01:00
Shane Kilkelly
df6cd4a054 Also block getConnectedUsers for restricted users.
Plus refactor to use a pass list instead of a deny list.
2019-10-04 13:41:49 +01:00
Shane Kilkelly
6765d03339 Track the isRestrictedUser flag on clients
Then, don't send new chat messages and new comments to those restricted clients.
We do this because we don't want to leak private information (email addresses
and names) to "restricted" users, those who have read-only access via a
shared token.
2019-10-04 10:30:24 +01:00
Simon Detheridge
21e294c6eb Generate retryable error when hitting rate limits in web 2019-09-02 11:27:04 +01:00
Brian Gough
fe2e7b3065 minimal fix for undefined connected users 2019-08-16 10:07:30 +01:00
Henry Oswald
38ed780d80 add log line to draining 2019-08-15 14:41:22 +01:00
Brian Gough
b0f0fb64ac clean up unused variable, convert setting to number 2019-08-15 09:48:42 +01:00
Brian Gough
a7a161556f Merge branch 'bg-status-on-shutdown' 2019-08-15 09:42:00 +01:00
Brian Gough
fa94e3d5e3 Merge pull request #69 from overleaf/ho-drain-connections-timewindow
add shutdownDrainTimeWindow, drains all connections within time range
2019-08-15 09:22:10 +01:00
Brian Gough
022e47b5c8 Merge pull request #73 from overleaf/bg-connected-client-metrics
add connected client count metric
2019-08-15 09:20:03 +01:00
Brian Gough
3552fa40c2 Merge pull request #72 from overleaf/bg-refresh-client-list
refresh client list
2019-08-15 09:19:20 +01:00
Henry Oswald
78629610d5 add health check endpoint and http route logger 2019-08-14 15:38:02 +01:00
Brian Gough
f13e66b453 fix client count so that result is zero when all clients have left 2019-08-14 15:34:23 +01:00
Brian Gough
8270c14d86 add connected client count metric 2019-08-14 15:22:03 +01:00
Brian Gough
d57b229e17 update tests 2019-08-14 13:03:14 +01:00
Brian Gough
d3171e4e2e remove unwanted argument 2019-08-14 13:03:06 +01:00
Henry Oswald
2ae4c8c174 Merge branch 'ho-drain-connections-timewindow' of github.com:overleaf/real-time into ho-drain-connections-timewindow 2019-08-14 11:52:22 +01:00
Henry Oswald
4a984f533e remove forceDrainMsDelay
as soon as a pod is marked as being killed we should start draining
2019-08-14 11:51:25 +01:00
Brian Gough
20d442120f notify docupdate if the flush is from a shutdown 2019-08-13 17:36:53 +01:00
Brian Gough
7db882f339 fix unit tests 2019-08-13 17:26:49 +01:00
Brian Gough
0708f717fd reject connections when shutdown in progress
send a message to the client to reconnect immediately
2019-08-13 16:59:15 +01:00
Brian Gough
53431953fc make shutDownInProgress available via settings 2019-08-13 16:56:48 +01:00
Brian Gough
b3e5709b64 enforce a minimum drain rate 2019-08-13 16:15:30 +01:00
Henry Oswald
00cca29d9e add shutdownDrainTimeWindow, drains all connections within time range 2019-08-13 14:21:47 +01:00
Brian Gough
5b54d36b37 fail readiness check when shutting down 2019-08-13 10:41:35 +01:00
Brian Gough
2000f478a7 refresh the client list on demand 2019-08-13 10:40:03 +01:00
Miguel Serrano
49c7bde799 Merge pull request #66 from overleaf/msm-patched-eventemitter-socketio-node7
Patched EventEmitter for socket.io compatibility with Node >= 7
2019-08-12 11:30:11 +02:00
Brian Gough
478a727c61 ignore spurious requests to leave other docs 2019-07-29 15:19:08 +01:00
Brian Gough
04a171171f fix async behaviour of join/leave 2019-07-29 11:54:02 +01:00
mserranom
cf0df28f4c Patched EventEmitter for socket.io compatibility with Node >= 7 2019-07-25 09:22:24 +00:00
Brian Gough
22d722f3e8 add metric for RoomEvents listeners 2019-07-24 16:25:45 +01:00
Brian Gough
277ec71a5b subscribe to doc updates before requesting doc content 2019-07-24 15:49:29 +01:00
Brian Gough
1c74cbbc4e add comments 2019-07-24 15:49:29 +01:00
Brian Gough
273af3f3aa refactor subscribe resolution 2019-07-24 14:30:48 +01:00
Brian Gough
e14a94906a update naming from Set -> Map 2019-07-24 14:18:15 +01:00
Brian Gough
cb53bfafd6 remove unnecessary require 2019-07-24 09:52:31 +01:00
Brian Gough
61b3a000b4 fix whitespace 2019-07-24 09:52:20 +01:00
Brian Gough
159b39c491 ensure redis channel is subscribed when joining room 2019-07-23 17:02:09 +01:00
Brian Gough
84e6ff616f whitespace fix 2019-07-22 12:25:41 +01:00
Brian Gough
bb629c27a1 rename unit test ChannelManager to ChannelManagerTests 2019-07-22 11:28:49 +01:00
Brian Gough
1afebd12a1 unit tests 2019-07-22 11:23:43 +01:00
Brian Gough
92e6910180 cleanup 2019-07-22 11:23:33 +01:00
Brian Gough
8c7b73480f upgrade sinon to 1.17.7 for onCall support 2019-07-22 11:23:02 +01:00
Brian Gough
9f7df5f10c wip unit tests 2019-07-19 11:58:40 +01:00
Brian Gough
a538d10488 extend comment re disconnection 2019-07-19 08:56:38 +01:00
Brian Gough
616014e05d add comment about automatically leaving rooms 2019-07-19 08:50:43 +01:00
Brian Gough
40353a410f fix unit tests 2019-07-19 08:49:57 +01:00
Brian Gough
3bf5dd5d6b clarify errors for subscribe/unsubscribe 2019-07-18 14:25:25 +01:00
Brian Gough
f6f6f549d9 don't publish on individual channels until explicitly set 2019-07-18 12:55:23 +01:00
Brian Gough
804f4c2bd2 listen on separate channels for each project/doc 2019-07-18 12:55:23 +01:00
Brian Gough
ae512dc9fb Merge pull request #62 from overleaf/bg-patch-socket-io-frame-bug
monkeypatch socket.io to fix frame handler in v0.9.16
2019-07-17 13:48:04 +01:00
Brian Gough
9ecce32ff9 Merge pull request #63 from overleaf/bg-log-out-of-order-events
log out of order events now that the rate is lower
2019-07-17 13:47:45 +01:00
Brian Gough
0c6ba4c1a8 monkeypatch socket.io to fix frame handler in v0.9.16 2019-07-16 14:02:52 +01:00
Brian Gough
8a7804f0a7 make event order check a configuration setting 2019-07-15 13:45:34 +01:00
Brian Gough
24a4709cff log out of order events now that the rate is lower 2019-07-15 11:14:48 +01:00
Brian Gough
e632f9f29d only create per-client metrics when there are multiple redis clients 2019-07-11 11:35:48 +01:00
Brian Gough
80f8f2465e remove unused pubsub client 2019-07-11 11:10:33 +01:00
Brian Gough
689a75f397 add logging for redis clients at start up 2019-07-09 14:18:39 +01:00
Brian Gough
dd54789e2b fix build problems 2019-07-09 12:20:59 +01:00
Brian Gough
580b100362 only publish to one redis client in WebsocketLoadBalancer
but listen to all of them
2019-07-09 12:03:13 +01:00
Brian Gough
999cbd8ee6 add a per-client metric 2019-07-09 12:01:58 +01:00
Brian Gough
cb289f2dec make redis client list dynamic based on settings 2019-07-09 11:45:00 +01:00
Brian Gough
b5f9bc422b support multple redis instances for pubsub 2019-07-08 15:56:25 +01:00
Henry Oswald
520857cf7a simplify redis continual traffic
we can't send double health check events to same redis, it causes
health check duplicate errors. Commit just sends health check data to
pub sub pair and then sends non health check traffic to cluster to keep
the connection open
2019-07-08 12:07:28 +01:00
Henry Oswald
1038c5cd0d send health check to pubsub channel and use different var name 2019-07-08 11:53:42 +01:00
Henry Oswald
eadef7b133 Merge pull request #59 from overleaf/ho-redis-natmap-sentinel
Move pubsub to seperate connection
2019-07-08 11:18:12 +01:00
Henry Oswald
9953c933ee Update package.json 2019-07-08 11:18:02 +01:00
Henry Oswald
487865fad3 Merge pull request #57 from overleaf/sk-dep-upgrades-2019-06
update logger and metrics
2019-07-08 11:17:29 +01:00
Henry Oswald
42e5d2fb6e Update app.coffee 2019-07-08 11:17:08 +01:00
Henry Oswald
8042a415ec move pubsub traffic over to a pubsub redis connection string 2019-07-04 13:38:39 +01:00
Henry Oswald
b268285ff6 bump redis-sharelatex (and io redis) to 1.0.9 2019-07-02 16:55:07 +01:00
Henry Oswald
670ce61da1 require underscore 2019-07-02 15:36:17 +01:00
Henry Oswald
88b75b8baa send health check data to all redis backends 2019-07-02 14:56:50 +01:00
Henry Oswald
92f60690f3 add redis set 2019-07-02 14:46:58 +01:00
Henry Oswald
922a1a1aba bump redis driver 2019-07-02 12:04:19 +01:00
Shane Kilkelly
283a6066d4 update logger and metrics 2019-06-21 11:26:28 +01:00
miguel
46dfe56b05 Downgraded unathorised log to warning 2019-06-21 07:30:12 +02:00
Brian Gough
a579a83389 Merge pull request #53 from overleaf/em-doc-updater-404s
Do not log error on doc updater 404
2019-06-03 10:55:04 +01:00
Brian Gough
d4f003fe0f Merge pull request #55 from overleaf/bg-allow-fractional-drain-rate
allow fractional drain rate
2019-06-03 10:53:57 +01:00
Brian Gough
9da98614c7 Merge pull request #54 from overleaf/bg-use-background-flush-on-disconnect
use background flush on disconnect
2019-06-03 10:53:43 +01:00
Brian Gough
40f3456b1c update unit test 2019-06-03 10:34:59 +01:00
Brian Gough
63f052192e use background flush on disconnect 2019-06-03 09:42:12 +01:00
Eric Mc Sween
acf850bce9 Do not log error on doc updater 404
Document updater 404s are not indicative of a problem, but just of the client
trying to connect to a deleted document, which is easy to trigger. We
log a warning instead.
2019-05-31 17:32:21 -04:00
Henry Oswald
421a914e72 log out when health check manager fails a check 2019-05-31 09:15:49 +01:00
Henry Oswald
2c9b222437 fix breaking tests from using ioredis with inbuilt promises
because a promise is returned from ioredis it errors in mocha as it
can't take a promise and a callback
2019-05-30 10:58:05 +01:00
Henry Oswald
47e0cb44ce bump redis to 1.0.8 2019-05-30 10:29:34 +01:00
Brian Gough
74db743ffa allow fractional drain rate 2019-05-24 15:23:01 +01:00
Henry Oswald
78372119f8 Revert "Csh issue 1118 node 10.15.3" 2019-05-24 15:21:48 +01:00
Brian Gough
20d5cc69a4 filter invalid updates 2019-05-24 10:19:02 +01:00
Christopher Hoskin
fd8ac10bf7 Merge pull request #46 from das7pad/misc/node7plus-support
[misc] add support for node 7+
2019-05-13 11:58:27 +01:00
Christopher Hoskin
20683f3094 Update Node from 6.15.1 to 10.15.3 2019-05-13 11:55:42 +01:00
Christopher Hoskin
5f045d9792 Update buildscripts to 1.1.21 2019-05-13 11:54:37 +01:00
Timothée Alby
8dc41da0ba update Git URL in Jenkinsfile 2019-05-07 17:45:08 +01:00
Jakob Ackermann
79a314d5fd [misc] disable the flash transport
We do not use flash on the website and the policy file provider is not
 compatible with node7+.

Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-05-01 01:48:01 +02:00
Jakob Ackermann
6601e94db7 [misc] bump socket.io to 0.9.19 for node7+ support
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2019-05-01 01:48:00 +02:00
Brian Gough
2828cc3d7f Merge pull request #45 from sharelatex/bg-update-request
update request module
2019-04-15 15:37:14 +01:00
Brian Gough
2277872022 update package.json to current version of request 2019-04-15 15:26:04 +01:00
Brian Gough
15c7c911f9 update request module 2019-04-15 14:46:58 +01:00
Brian Gough
2dbdcf5bc8 add health check to pubsub channels 2019-04-15 14:17:55 +01:00
Brian Gough
e72acacf17 downsample logging 2019-04-11 16:25:42 +01:00
Brian Gough
9eee098af4 Merge pull request #43 from sharelatex/bg-update-ioredis
update to redis-sharelatex v1.0.6 for latest ioredis
2019-04-11 15:50:56 +01:00
Brian Gough
cefdd15c5e update to redis-sharelatex v1.0.6 for latest ioredis 2019-04-11 15:49:19 +01:00
Brian Gough
ef9e97e7d1 add metric for applied-ops events 2019-04-11 15:39:28 +01:00
Brian Gough
6374a641d5 fix unit tests 2019-04-11 15:07:42 +01:00
Brian Gough
c6225d614e add /debug/events endpoint 2019-04-11 15:00:25 +01:00
Brian Gough
2a31139254 log and skip duplicate events 2019-04-11 12:53:43 +01:00
Brian Gough
893515e83f handle duplicate entries in io.sockets.clients 2019-04-09 14:48:00 +01:00
Brian Gough
936311f1fb fix eventlogger tests to use name with dashes 2019-03-22 11:20:38 +00:00
Brian Gough
efa83b4cde stub out eventlogger in unit test 2019-03-22 11:19:31 +00:00
Brian Gough
6c71ae172b return out of order events for consistency 2019-03-22 11:19:08 +00:00
Brian Gough
c5a09fcf0a add comment about downsampling 2019-03-22 11:18:34 +00:00
Brian Gough
695472a8aa fix event id parsing to allow for dashes in keys 2019-03-22 11:18:19 +00:00
Brian Gough
1ab5e52699 down-sample valid events by 1000 2019-03-21 15:52:53 +00:00
Brian Gough
e91b967bdb use per-channel event metrics 2019-03-21 14:59:39 +00:00
Brian Gough
8c82faa966 check order of messages on applied-ops channel 2019-03-21 14:59:39 +00:00
Brian Gough
57c5ec14bd check for a valid counter value in event log 2019-03-21 14:59:19 +00:00
Brian Gough
9b25374cd3 use time-based cleaning of event log 2019-03-21 14:59:19 +00:00
Brian Gough
befe4be517 add check for duplicate events 2019-03-19 14:22:11 +00:00
Henry Oswald
b9e3853a47 add sentry into settings.defaults 2019-03-05 17:33:52 +00:00
Henry Oswald
5119db43a7 Merge pull request #37 from sharelatex/ho-continual-pub-sub-traffic
setup continualPubsubTraffic to keep pub sub happy
2019-02-19 11:28:06 +00:00
Henry Oswald
26e903f384 setup continualPubsubTraffic
this keeps the pub sub channel ticking along happily
2019-02-15 17:04:49 +00:00