Simon Detheridge
7543f2fcbd
Catch errors from socket.io and attempt graceful cleanup
2019-10-17 12:45:56 +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
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
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
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
d3171e4e2e
remove unwanted argument
2019-08-14 13:03:06 +01:00
Brian Gough
20d442120f
notify docupdate if the flush is from a shutdown
2019-08-13 17:36:53 +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
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
2000f478a7
refresh the client list on demand
2019-08-13 10:40:03 +01: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
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
92e6910180
cleanup
2019-07-22 11:23:33 +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
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
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
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
8042a415ec
move pubsub traffic over to a pubsub redis connection string
2019-07-04 13:38:39 +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
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
Brian Gough
74db743ffa
allow fractional drain rate
2019-05-24 15:23:01 +01:00
Brian Gough
20d5cc69a4
filter invalid updates
2019-05-24 10:19:02 +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
ef9e97e7d1
add metric for applied-ops events
2019-04-11 15:39:28 +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
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
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
Chrystal Maria Griffiths
0b88a63444
Merge pull request #35 from sharelatex/cmg-anonymous-display-name
...
Nameless logged in user labelled as anonymous
2019-02-15 14:53:18 +00:00
Chrystal Griffiths
26acdfd072
Add comment explaining why not sending anon data up
2019-02-12 14:06:59 +00:00
Chrystal Griffiths
bb06f82e04
Still send cursorData for logged in users
2019-02-12 14:00:47 +00:00
Chrystal Griffiths
2ec760403f
Revert to method not sending cursorData because of duplication
2019-02-11 11:52:14 +00:00
Chrystal Griffiths
cb12e1c6f6
Send an empty string for every nameless user
2019-02-08 15:39:51 +00:00
Henry Oswald
d85bf5cedb
remove extra logging line
2019-02-06 15:26:12 +00:00
Henry Oswald
37d1c96051
add logging
2019-02-04 16:59:36 +00:00
Henry Oswald
d4e8bc1d4b
remove metrics.set as we don't support it atm
2018-12-05 15:29:23 +00:00
Henry Oswald
8073cdea75
improve logging
2018-12-04 14:17:59 +00:00
Henry Oswald
7f2decae4d
start drain after 3 hours
2018-12-04 14:06:39 +00:00
Henry Oswald
327fa79f1c
update build scripts, acceptence tests now pass. includes dockerfile 1.1.3
2018-05-23 15:00:46 +01:00
Shane Kilkelly
7295342ec2
fix existance checks for first_name and last_name
2017-12-18 11:13:19 +00:00
Shane Kilkelly
675814f1b1
Handle the case where the user has only a last_name set
2017-12-13 10:28:35 +00:00
Shane Kilkelly
06c8729ce7
If a user has only their first_name
set, don't label as Anonymous
2017-12-12 15:27:50 +00:00
Brian Gough
b734f7a3f7
convert errors to warnings
2017-11-10 15:01:23 +00:00
Shane Kilkelly
3b39464aa5
Merge branch 'master' into sk-unlisted-projects
2017-11-02 10:58:41 +00:00
Shane Kilkelly
c5e602c0a9
Fix typo
2017-10-26 16:00:06 +01:00
Shane Kilkelly
76673d5f0a
Change anonToken
to anonymousAccessToken
2017-10-20 10:10:58 +01:00
Shane Kilkelly
438bb28c04
Get anonToken from joinProject payload
2017-09-29 16:32:46 +01:00
Shane Kilkelly
d4c735c3ea
Pass anonymous-read token along as header to web-api
2017-09-26 14:21:41 +01:00
Alasdair Smith
a0505afb23
Be defensive on comment text
2017-09-22 09:34:10 +01:00
Alasdair Smith
c67150ea10
Ensure falsy value doesn't fail conditional
2017-09-22 09:33:29 +01:00
Alasdair Smith
937bf82a2f
Return callback with guard
2017-09-22 09:25:24 +01:00
Alasdair Smith
5d8e201732
Don't return obj
2017-09-21 16:58:03 +01:00
Alasdair Smith
a299d7335d
Fix incorrect var
2017-09-21 16:56:18 +01:00
Alasdair Smith
90d05dc6dd
Make args order consistent
2017-09-21 16:56:09 +01:00
Alasdair Smith
3966e2f85b
Make variadic options more explicit
2017-09-21 16:55:49 +01:00
Alasdair Smith
790b9ea8ed
Switch order of args
2017-09-21 15:19:19 +01:00
Alasdair Smith
55c880e1dd
DRY up a bit
2017-09-21 15:07:15 +01:00
Alasdair Smith
b796879c9f
Handle options not being passed
2017-09-21 14:58:49 +01:00
Alasdair Smith
aa6e0d0d69
Only encode ranges if option passed
2017-09-21 14:23:16 +01:00
Alasdair Smith
9f503f1e9f
First pass at encoding changes & comments in ranges
2017-09-21 13:25:55 +01:00
Brian Gough
ab6fe1d948
check for null bytes from JSON.stringify
2017-06-01 11:27:56 +01:00
James Allen
642134da79
Don't return a user if there is no entry
...
ioredis returns a blank object, {}, if there is no key with hgetall.
Previously, node-redis returned nil. So we need to check for a blank
object as well as a nil object.
2017-05-16 11:06:05 +01:00
James Allen
a8917b933f
Remove multi call to make compatible with redis-cluster
2017-05-11 17:27:28 +01:00
James Allen
720f24427a
Use new redis-sharelatex with support for cluster
2017-05-02 15:51:17 +01:00
James Allen
d8ff8ba098
Merge pull request #11 from sharelatex/ja-allow-readonly-comments
...
Allow readonly users to submit comments
2017-03-20 14:25:03 +00:00
James Allen
8766646149
Allow users to send a comment update if they are read-only
2017-03-15 15:45:52 +00:00
James Allen
d939f6cd65
Remove some old logging
2017-03-15 15:45:18 +00:00
Brian Gough
d468f662ac
handle disconnects of unauthenticated users
2017-02-23 12:04:36 +00:00
James Allen
9fd099c24f
Update getDoc signature to match reality
2017-01-16 17:09:44 +01:00
James Allen
f66d631886
Merge branch 'master' into ja-track-changes
2017-01-13 13:40:42 +01:00
Brian Gough
e5160d9a36
log client id when disconnecting on otUpdateError
...
only log errors for connected clients
2016-12-16 14:43:51 +00:00
James Allen
bf2620ee0c
Return ranges from docupdater to client
2016-12-08 11:37:31 +00:00
James Allen
4cff89becc
Fix acceptance tests
2016-12-08 11:12:07 +00:00
Brian Gough
2e0f5b74db
send connectionAccepted/Rejected events on connect
...
let the client know whether it has successfully authenticated
2016-10-28 15:41:57 +01:00
James Allen
6fa2a81baf
Make breakout logic after draining N clients more clear
2016-10-24 16:54:56 +01:00
James Allen
7107d9adcd
Delete logging that will be noisy in production
2016-10-24 16:40:10 +01:00
James Allen
59d042e264
Add end point to start draining clients
2016-10-24 16:36:09 +01:00
Shane Kilkelly
185bc7e635
Update session code
2016-09-07 08:58:35 +01:00
Brian Gough
8ffec68250
add comment about fallback case
2016-09-05 12:46:52 +01:00
Brian Gough
ef85bce3b8
track permissions when clients join and leave docs
2016-09-05 12:46:52 +01:00
Brian Gough
9ab19c5d03
avoid double callback
2016-09-02 16:34:14 +01:00
James Allen
51939512ac
Return semantic error if doc ops range is not loaded
2016-05-31 14:21:23 +01:00
James Allen
f4a465ea69
Return a 'not authorized' error if the user is not logged in/authorized
2016-05-31 11:49:51 +01:00
James Allen
343ec9d708
Add in flags that track how often each callback is called
2016-05-26 15:46:45 +01:00
James Allen
030abc5340
Don't flush to track changes now that this happens in doc updater
2016-01-20 17:51:24 +00:00
James Allen
830d676f4f
Add in limit on all JSON parsing
2015-12-01 11:05:49 +00:00
James Allen
92d18d7e2e
Reduce limit to actuall 1Mb, not 1Gb
2015-11-30 15:40:03 +00:00
James Allen
0372fa3203
Add in extra logging about size of messages
2015-11-30 15:25:09 +00:00
James Allen
503b766dcc
For duplicate ops only send ack to submitting client
...
When a duplicate op is received, we only need to ack it to client
that sent it. Only that client is having trouble, and all other clients
will already have received it.
2015-11-19 10:58:28 +00:00
Henry Oswald
3c70acd560
added metrics into realtime around doc update manager
2015-08-29 08:26:16 +01:00
James Allen
d79793c34f
Monitor get document times
2015-08-29 08:22:43 +01:00
James Allen
5da5c5c435
Accept arrays of messages to send to client
2015-03-12 14:32:35 +00:00
James Allen
536118b0cf
Relay messages received via HTTP into the project
2015-03-03 17:15:19 +00:00
James Allen
79cd0e6a5c
Record user id correctly when updating position
2015-02-05 13:41:31 +00:00
James Allen
7a9f7f0870
Don't print massive stack trace when there is no room_id
2014-11-24 22:28:50 +00:00
James Allen
d62dc7ca3a
Don't be so verbose with client update errors
2014-11-24 15:42:26 +00:00
James Allen
0ed7d0c811
Ignore messages with null room_id
2014-11-24 12:09:12 +00:00
James Allen
57a34e940e
Authorize users before updating their cursor positions
2014-11-24 12:05:05 +00:00
James Allen
a48c8aad92
Support anonymous access
2014-11-21 11:48:59 +00:00
James Allen
2a05045600
Add in redis health check
2014-11-20 16:56:09 +00:00
James Allen
2cb365d2b4
Add /status end point
2014-11-17 14:38:43 +00:00
James Allen
ce587a00ba
Send web requests with HTTP auth
2014-11-17 14:35:07 +00:00
James Allen
66dfafdebe
Add metrics into all end points
2014-11-17 13:12:49 +00:00
James Allen
8bc6d0e291
Unify logging
2014-11-17 12:46:27 +00:00