Jakob Ackermann
d2a2b9d46e
[misc] add tests for web replying with a 403 for joinProject
2020-08-27 11:51:56 +01:00
Jakob Ackermann
1ff9c1e71b
[misc] add the rpc-method into the log context in Router._handleError
2020-08-27 11:51:55 +01:00
Jakob Ackermann
dee4749e6d
[misc] re-level log: properly silence unauthorized updateClientPosition
2020-08-27 10:11:40 +01:00
Jakob Ackermann
425052ff91
Merge pull request #187 from overleaf/jpa-o-error-tagging
...
[misc] migrate to OError tagging/wrapping
2020-08-25 11:46:28 +02:00
Jakob Ackermann
64e659bf43
Merge pull request #186 from overleaf/jpa-fix-join-project-error-context
...
[misc] fix join project error context
2020-08-25 11:46:18 +02:00
Jakob Ackermann
849a1cf416
Merge pull request #185 from overleaf/jpa-doc-id-in-error-context
...
[misc] add/bring back doc_id in error context
2020-08-25 11:42:41 +02:00
Jakob Ackermann
ee3d3b09ed
[misc] wrap redis errors as tagging does not work with them
...
ioredis may reuse the error instance for multiple callbacks. E.g. when
the connection to redis fails, the queue is flushed with the same
MaxRetriesPerRequestError instance.
2020-08-24 10:12:20 +01:00
Jakob Ackermann
537e97be73
[misc] OError.tag all the errors in async contexts
...
See the docs of OError.tag:
https://github.com/overleaf/o-error#long-stack-traces-with-oerrortag
(currently at 221dd902e7bfa0ee92de1ea5a3cbf3152c3ceeb4)
I am tagging all errors at each async hop. Most of the controller code
will only ever see already tagged errors -- or new errors created in
our app code. They should have enough info that we do not need to tag
them again.
2020-08-24 10:12:06 +01:00
Jakob Ackermann
8e31cc5c23
[Router] _handleError: joinProject error-context may not have project_id
...
The ol_context patch changed the priority of client context and rpc
context.
This lead to the (possibly missing) project_id of the client context
overwriting the project_id of the rpc context.
REF: f1d55c0a5437a518e9f4617473caed9ba928e648
2020-08-21 13:29:28 +01:00
Jakob Ackermann
f935b1881a
[Router] leaveDoc: pass the doc_id into the error-context
2020-08-21 12:47:42 +01:00
Jakob Ackermann
fd88819eec
[Router] _handleError: ol_context.doc_id does not exist, drop overwrite
2020-08-21 12:47:42 +01:00
Jakob Ackermann
880056d397
[Router] use a new UnexpectedArgumentsError
2020-08-21 12:47:08 +01:00
Jakob Ackermann
50140f785a
[WebsocketController] use a new JoinLeaveEpochMismatchError
2020-08-21 12:47:08 +01:00
Jakob Ackermann
0462e3e437
[WebsocketController] use a new NotJoinedError
2020-08-21 12:47:07 +01:00
Jakob Ackermann
4cb8cc4a85
[DocumentUpdaterManager] use a new ClientRequestedMissingOpsError
2020-08-21 12:47:07 +01:00
Jakob Ackermann
8abfdb87ff
[DocumentUpdaterManager] use a new DocumentUpdaterRequestFailedError
2020-08-21 12:47:07 +01:00
Jakob Ackermann
02a2382264
[WebApiManager] use a new CorruptedJoinProjectResponseError
2020-08-21 12:47:07 +01:00
Jakob Ackermann
68bc9d0d23
[WebApiManager] use a new WebApiRequestFailedError
2020-08-21 12:47:06 +01:00
Jakob Ackermann
59c4c884a5
[WebsocketController] use the new NotAuthorizedError
2020-08-21 12:47:06 +01:00
Jakob Ackermann
a8c51de510
[AuthorizationManager] use a new NotAuthorizedError
2020-08-21 12:47:06 +01:00
Jakob Ackermann
de518ea4eb
[SessionSockets] use a new MissingSessionError
2020-08-21 12:47:05 +01:00
Jakob Ackermann
6828becb46
[DocumentUpdaterManager] use a new NullBytesInOpError
2020-08-21 12:47:05 +01:00
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
Jakob Ackermann
c7b9dadd16
[misc] increase the timeout for unit tests -- CI boxes are too slow
2020-08-21 12:45:30 +01:00
Jakob Ackermann
7ce76775ea
Merge pull request #181 from overleaf/jpa-forcefully-disconnect-from-shutdown-process
...
[misc] forcefully disconnect from shutdown process
2020-08-17 12:56:18 +02:00
Jakob Ackermann
1ffffbcbc2
Merge pull request #180 from overleaf/jpa-harden-cleanup-take2
...
[misc] bump socket.io and socket.io-client
2020-08-17 12:56:04 +02:00
Jakob Ackermann
67d9543cf3
Merge pull request #179 from overleaf/csh-issue-1123-bump-logger-220
...
[misc] bump logger-sharelatex to version 2.2.0
2020-08-17 12:55:40 +02:00
Jakob Ackermann
3505fae253
Merge pull request #178 from overleaf/jpa-ignore-broken-socket-errors
...
[app] ignore errors from accessing disconnected client sockets
2020-08-17 12:55:29 +02:00
Jakob Ackermann
1550e9f885
Merge pull request #176 from overleaf/jpa-bump-dev-env-3-3-2
...
[misc] bump the dev-env to 3.3.2
2020-08-17 12:55:13 +02:00
Jakob Ackermann
83b8b077fa
[misc] bump socket.io and socket.io-client
2020-08-14 11:16:26 +01:00
Jakob Ackermann
ea75b84eef
[misc] let the orchestrator handle the process restart
...
Note that there is also the `shutdownCleanly` interval which may notice
that the shutdown has completed. There is some network IO required to
signal all clients the server disconnect, so we cannot run process.exit
immediately.
2020-08-13 13:39:25 +01:00
Jakob Ackermann
ee59056c6e
[misc] forcefully disconnect stale clients from shutdown process
2020-08-13 13:39:22 +01:00
Christopher Hoskin
fe41f1b00c
[misc] bump logger-sharelatex to version 2.2.0
2020-08-12 16:04:21 +01:00
Jakob Ackermann
a0028646a5
[app] ignore errors from accessing disconnected client sockets
...
Technically `EHOSTUNREACH` and `ETIMEDOUT` should go into a
'disconnected_read' metric. But this would require changes to
dashboards and a larger diff.
2020-08-12 11:45:49 +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
370baa06c3
[misc] bump the dev-env to 3.3.2
2020-08-10 17:10:31 +01:00
Jakob Ackermann
51e56dafcf
[misc] bump the dev-env to 3.3.1
2020-08-05 10:46:23 +01:00
Jakob Ackermann
1b52366c61
Merge pull request #174 from overleaf/jpa-bump-dev-env
...
[misc] bump the dev-env to 3.3.0
2020-08-04 12:29:22 +02:00
Jakob Ackermann
f4d9ae1150
[misc] bump the dev-env to 3.3.0
2020-08-04 11:07:19 +01:00
Jakob Ackermann
a91f78634b
[misc] bump socket.io and socket.io-client
2020-07-31 16:32:03 +01:00
Shane Kilkelly
3d92858939
Upgrade redis-sharelatex to 1.0.13
2020-07-24 10:42:46 +01:00
Jakob Ackermann
562375d351
[misc] fix express deprecations
2020-07-22 09:45:14 +01:00
Jakob Ackermann
ca4168ce90
[misc] use overleaf/socket.io and overleaf/socket.io-client forks
2020-07-08 15:07:19 +01:00
Jakob Ackermann
9fff03bca5
[misc] optionally expose the hostname in the 'debug.getHostname' rpc
2020-07-07 11:07:28 +01:00
Jakob Ackermann
aa9d6c8dc9
[misc] reland decaff cleanup ( #166 )
...
* [misc] decaff cleanup: RoomManager
* [misc] decaff cleanup: RedisClientManager
* [misc] decaff cleanup: SafeJsonParse
* [misc] decaff cleanup: WebApiManager
* [misc] decaff cleanup: WebsocketController
* [misc] decaff cleanup: WebsocketLoadBalancer
* [misc] decaff cleanup: SessionSockets
* [misc] decaff cleanup: HttpController
* [misc] decaff cleanup: HttpApiController
* [misc] decaff cleanup: HealthCheckManager
* [misc] decaff cleanup: EventLogger
* [misc] decaff cleanup: Errors
o-error will eliminate most of it -- when we migrate over.
* [misc] decaff cleanup: DrainManager
* [misc] decaff cleanup: DocumentUpdaterManager
* [misc] decaff cleanup: DocumentUpdaterController: no-unused-vars
* [misc] decaff cleanup: DocumentUpdaterController: Array.from
* [misc] decaff cleanup: DocumentUpdaterController: implicit return
* [misc] decaff cleanup: DocumentUpdaterController: IIFE
* [misc] decaff cleanup: DocumentUpdaterController: null checks
* [misc] decaff cleanup: DocumentUpdaterController: simpler loops
* [misc] decaff cleanup: DocumentUpdaterController: move module name def
* [misc] decaff cleanup: ConnectedUsersManager: handle-callback-err
* [misc] decaff cleanup: ConnectedUsersManager: implicit returns
* [misc] decaff cleanup: ConnectedUsersManager: null checks
* [misc] decaff cleanup: ChannelManager: no-unused-vars
* [misc] decaff cleanup: ChannelManager: implicit returns
* [misc] decaff cleanup: ChannelManager: other cleanup
- var -> const
- drop variable assignment before return
* [misc] decaff cleanup: AuthorizationManager: handle-callback-err
Note: This requires a change in WebsocketController to provide a dummy
callback.
* [misc] decaff cleanup: AuthorizationManager: Array.from
* [misc] decaff cleanup: AuthorizationManager: implicit returns
* [misc] decaff cleanup: AuthorizationManager: null checks
* [misc] decaff cleanup: Router: handle-callback-err
* [misc] decaff cleanup: Router: standard/no-callback-literal
* [misc] decaff cleanup: Router: Array.from
* [misc] decaff cleanup: Router: implicit returns
* [misc] decaff cleanup: Router: refactor __guard__ wrapper
* [misc] decaff cleanup: Router: null checks
And a minor bug fix: user.id -> user._id
* [misc] decaff cleanup: Router: move variable declarations to assignments
* [misc] decaff cleanup: app: implicit returns
* [misc] decaff cleanup: app: __guard__
* [misc] decaff cleanup: app: null checks
* [misc] decaff cleanup: app: function definitions
* [misc] decaff cleanup: app: drop unused next argument
* [misc] decaff cleanup: app: var -> const
2020-07-07 11:06:02 +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