Jakob Ackermann
af50f9b02c
[DocumentUpdaterManager] use a new UpdateTooLargeError
2020-08-21 12:47:05 +01:00
Jakob Ackermann
5950b26a42
[SafeJsonParse] migrate to OError and use a new DataTooLargeToParseError
2020-08-21 12:47:05 +01:00
Jakob Ackermann
f82177a46a
[Errors] migrate to OError
2020-08-21 12:47:04 +01:00
Brian Gough
831d794bf4
clean up join/leave handling
...
Co-Authored-By: Jakob Ackermann <jakob.ackermann@overleaf.com>
2020-08-12 10:54:22 +01:00
Jakob Ackermann
8601084a2e
[misc] WebsocketControllerTests: remove debugging code
2020-07-01 11:36:36 +01:00
Jakob Ackermann
a77222470b
[misc] WebsocketControllerTests: always pass cb to updateClientPosition
...
...and fix the inconsistent async behaviour for logged-in vs anonymous
users in the app.
2020-06-29 18:11:33 +01:00
Jakob Ackermann
4d01c02946
[misc] WebsocketControllerTests: explicitly pass a cb to leaveProject
...
...and fix the stubbing of `io.sockets.clients`.
We were running the assertions prior to the actual completion of the
leaveProject. Which in turn shadowed the broken test setup --
`io.sockets.clients()` was returning the `this.clientsInRoom=[]` from a
previous context.
2020-06-29 17:38:22 +01:00
Jakob Ackermann
bea0e9beb7
[misc] RoomManagerTests: explicitly pass a cb to joinProject/joinDoc
2020-06-29 17:12:26 +01:00
Jakob Ackermann
c76bcb7732
[misc] fix eslint errors in XMLHttpRequest.js
2020-06-24 10:52:37 +01:00
decaffeinate
53058452ee
prettier: convert miscellaneous files to Prettier format
2020-06-24 10:28:28 +01:00
decaffeinate
8a7fc78dc8
prettier: convert test/acceptance decaffeinated files to Prettier format
2020-06-23 18:30:45 +01:00
decaffeinate
db98fdac0a
decaffeinate: rename test/acceptance/coffee to test/acceptance/js
2020-06-23 18:30:37 +01:00
decaffeinate
5443450abb
decaffeinate: Run post-processing cleanups on ApplyUpdateTests.coffee and 18 other files
2020-06-23 18:30:34 +01:00
decaffeinate
d318e4fd0e
decaffeinate: Convert ApplyUpdateTests.coffee and 18 other files to JS
2020-06-23 18:30:29 +01:00
decaffeinate
30a9c6ed2c
decaffeinate: Rename ApplyUpdateTests.coffee and 18 other files from .coffee to .js
2020-06-23 18:30:23 +01:00
decaffeinate
3eceb8a5f6
prettier: convert test/unit decaffeinated files to Prettier format
2020-06-23 18:30:16 +01:00
decaffeinate
68e2adebf5
decaffeinate: rename test/unit/coffee to test/unit/js
2020-06-23 18:30:06 +01:00
decaffeinate
93697a8c5c
decaffeinate: Run post-processing cleanups on AuthorizationManagerTests.coffee and 13 other files
2020-06-23 18:30:03 +01:00
decaffeinate
2ca620e7a0
decaffeinate: Convert AuthorizationManagerTests.coffee and 13 other files to JS
2020-06-23 18:29:59 +01:00
decaffeinate
e5d07bd3af
decaffeinate: Rename AuthorizationManagerTests.coffee and 13 other files from .coffee to .js
2020-06-23 18:29:53 +01:00
Jakob Ackermann
8ac973e767
[misc] help prettier/decaffeinate with scoping a comment into a fn body
2020-06-23 18:04:09 +01:00
Jakob Ackermann
5282f8f531
[misc] synchronous client store using an Object at .ol_context
2020-06-22 17:04:08 +01:00
Jakob Ackermann
5f7841526f
[misc] RoomManager: emitOnCompletion: properly handle Promise rejections
...
```
result = Promise.all([<Promise that rejects eventually>]) # rejection 1
result.then () -> RoomEvents.emit(eventName) # rejection 2
result.catch (err) -> RoomEvents.emit(eventName, err) # handle r1
```
As shown above, the second rejection remains unhandled. The fix is to
chain the `.catch()` onto the `.then()` Promise.
2020-06-17 09:29:12 +01:00
Jakob Ackermann
06a8dc8ec1
Merge pull request #155 from overleaf/jpa-backport-receiveupdate-tests
...
[backport] 107 and 116: Improve ReceiveUpdate acceptance tests
2020-06-10 11:28:25 +02:00
Jakob Ackermann
10eb30e572
Merge pull request #154 from overleaf/jpa-backport-httpcontroller-tests
...
[backport] 111 HttpController: 404 for missing clients and add tests
2020-06-10 11:28:17 +02:00
Jakob Ackermann
45ac2bdd97
Merge pull request #153 from overleaf/jpa-backport-drainmanager-tests
...
[backport] 108 and 112: DrainManager acceptance tests
2020-06-10 11:28:08 +02:00
Jakob Ackermann
cfe37dcbb5
Merge pull request #152 from overleaf/jpa-vendor-cookie
...
[misc] vendor a patched session.socket.io middleware
2020-06-10 11:27:58 +02:00
Jakob Ackermann
b2e4448992
[misc] test/acceptance: ReceiveUpdateTests: test remotely sent update
2020-06-10 09:53:48 +01:00
Jakob Ackermann
83e3ff0ed7
[misc] test/acceptance: ReceiveUpdateTests: add 2nd project/3rd client
...
...and check for cross project leakage.
2020-06-10 09:53:29 +01:00
Jakob Ackermann
56fda1f9b0
[misc] test/acceptance: use the correct redis instances
2020-06-10 09:43:15 +01:00
Jakob Ackermann
bc44494466
[HttpController] return 404 in case of a missing client and add tests
...
Add acceptance tests for the client view.
2020-06-10 09:41:36 +01:00
Jakob Ackermann
eabff1d6b2
[perf] test/acceptance: DrainManagerTests: cleanup previous clients
...
...before starting to drain.
2020-06-09 18:02:38 +01:00
Jakob Ackermann
91e296533f
[misc] test/acceptance: add tests for the draining of connections
2020-06-09 18:00:44 +01:00
Jakob Ackermann
acb7d7df5a
[misc] add test cases for the validation of the callback argument
...
When the user provides a function as last argument for socket.emit,
socket.io will flag this as an RPC and add a cb as the last argument
to the client.on('event', ...) handler on the server side.
Without a function as last argument for socket.emit, the callback
argument on the server side is undefined, leading to invalid function
calls (`undefined()`) and an unhandled exception.
The user can also provide lots of other arguments, so the 2nd/3rd ...
argument is of arbitrary type, again leading to invalid function calls
-- e.g. `1()`.
2020-06-09 16:30:03 +01:00
Jakob Ackermann
dc553c4150
[misc] vendor a patched session.socket.io middleware
2020-06-09 15:21:33 +01:00
Jakob Ackermann
5238e6ad36
Merge pull request #145 from overleaf/jpa-backport-140
...
[backport] 140: stop processing requests as we detect a client disconnect
2020-06-09 14:41:12 +02:00
Jakob Ackermann
589bedc3dd
Merge pull request #146 from overleaf/jpa-downgrade-logging
...
[misc] downgrade logging when running tests
2020-06-09 14:40:59 +02:00
Jakob Ackermann
f40241a037
[misc] downgrade logging when running tests
2020-06-05 11:38:09 +01:00
Jakob Ackermann
0b2cccf1e0
[misc] apply review feedback: adjust metric names
...
Co-Authored-By: Brian Gough <brian.gough@overleaf.com>
(cherry-picked from commit 67674b83efb452ece05cdc39525ee3a5eeb8a4d7)
2020-06-05 11:33:00 +01:00
Jakob Ackermann
ddcb9cf8c8
[misc] downgrade a warning message from clients leaving non-joined rooms
...
This can now happen all the time, as we skip the join for clients that
disconnect before joinProject/joinDoc completed.
(cherry-picked from commit f357931de74e088800f3cced3898cce4f251dad0)
2020-06-05 11:32:43 +01:00
Jakob Ackermann
7fa9061015
[misc] stop processing requests as we detect a client disconnect
...
v2 expose `client.connected`; v0 exposes `client.disconnected`
(cherry-picked from commit a9d70484343ca9be367d45bf7bb949e4be449647)
2020-06-05 11:32:13 +01:00
Jakob Ackermann
c6d08647c7
[misc] socket.io: use a secondary publicId for public facing usages
2020-06-04 17:18:07 +01:00
Jakob Ackermann
d13acb8ca3
[ChannelManager] port related and still mostly valid test from v2
...
I skipped the bulk of verifyConsistentBehaviour tests which are not
valid for the new implementation -- there is no optimization and
always cleanup.
2020-05-15 18:39:33 +02:00
Jakob Ackermann
1095851dfe
[misc] test/unit: fix typos and assertion of error messages
...
Sinon does not check the contents of the passed error when checked via
sinon.stub().calledWith.
```
callback = sinon.stub()
callback(new Error("some message"))
.calledWith(new Error("completely different message"))
=== true
```
Cherry-pick plus an additional patch for the joinProject bail-out.
(cherry picked from commit d9570fee70701a5f431c39fdbec5f8bc5a7843fe)
2020-05-15 14:46:05 +02:00
Jakob Ackermann
b713beb7f0
Merge pull request #135 from overleaf/jpa-skip-leave-project-for-invalid-clients
...
[WebsocketController] skip leaveProject when joinProject didn't complete
2020-05-13 15:34:41 +02:00
Jakob Ackermann
55af5e502f
[WebsocketController] skip leaveProject when joinProject didn't complete
...
Also drop dead code:
- user_id bailout
There is a check on a completed joinProject call now. It will always
set a user_id, see Router.coffee which has a fallback `{_id:"..."}`.
- late project_id bailout
WebsocketLoadBalancer.emitToRoom will not work without a project_id.
We have to bail out before the call.
2020-05-12 17:15:08 +02:00
Jakob Ackermann
684cb3903c
[WebsocketController] handle redis subscribe error on joinProject
...
joinProject should not complete when the redis pub/sub subscribe request
failed.
2020-05-12 13:03:50 +02:00
Brian Gough
5c28da1031
add metric for pendingUpdates queue
2020-04-07 11:53:54 +01:00
Jakob Ackermann
56628a16c6
[misc] track redis pub/sub payload sizes on publish
2020-03-30 11:31:44 +02:00
Jakob Ackermann
af53d3b603
[misc] skip duplicate JSON serialization for size check
2020-03-24 11:22:28 +01:00