Max Brunsfeld
213be3d6bd
Delete stale projects after cleanup interval, via server foreign key cascade
2022-12-20 17:27:42 -08:00
Max Brunsfeld
55800fc696
💄 Avoid repeated sql condition in rejoin_room
2022-12-20 17:23:52 -08:00
Max Brunsfeld
6a2066af6c
💄 Reduce indentation in Database::rejoin_room
2022-12-20 17:16:56 -08:00
Max Brunsfeld
6542b30d1f
Implement rejoining projects as guest when rejoining a room
...
Co-authored-by: Julia Risley <julia@zed.dev>
2022-12-20 15:02:26 -08:00
Max Brunsfeld
55ebfe8321
Handle unshared projects when rejoining a room
...
Also, construct remote projects via the room, to guarantee
that the room can manage the projects' sharing lifecycle.
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-12-20 11:10:46 -08:00
Antonio Scandurra
d31fd9bbf2
Support adding worktrees to project while host is offline
2022-12-20 17:42:08 +01:00
Antonio Scandurra
52babc51a0
Make host reconnection test pass when mutating worktree while offline
2022-12-20 17:30:58 +01:00
Antonio Scandurra
1a3940a12e
Fix project reconnection test to ensure rooms actually reconnects
2022-12-20 14:51:46 +01:00
Antonio Scandurra
1aec691b35
Sketch out project reconnection routine on the server
2022-12-20 12:03:43 +01:00
Max Brunsfeld
af85db9ea5
WIP - Retain hosts' project state when they disconnect
2022-12-19 11:38:08 -08:00
Antonio Scandurra
86e5ae1f2e
Allow nulls in projects.host_connection_{id,server_id}
...
The server version on stable won't be able to fill values for those
columns when we deploy the migration to preview.
With this commit we're also dropping the unused `worktree_extensions`
and `project_activity_periods` tables. The last version of the server
on stable (0.2.6) doesn't contain any code that accesses those tables.
2022-12-15 11:30:51 +01:00
Antonio Scandurra
067a19c971
Avoid logging an error when user who hasn't joined any room disconnects
2022-12-15 10:45:03 +01:00
Antonio Scandurra
688f179256
Use "id" nomenclature more consistently
2022-12-15 10:15:59 +01:00
Max Brunsfeld
6c58a4f885
Fix stale server queries, use foreign keys from connectionsn to servers
2022-12-14 17:34:24 -08:00
Antonio Scandurra
363e3cae4b
WIP
2022-12-14 19:25:07 +01:00
Antonio Scandurra
930be6706f
WIP
2022-12-14 18:02:39 +01:00
Antonio Scandurra
05e99eb67e
Introduce an epoch to ConnectionId
and PeerId
2022-12-14 15:55:56 +01:00
Max Brunsfeld
45bfcfc3b8
Fix excessive delay before clearing stale room data
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-12-13 11:17:20 -08:00
Antonio Scandurra
6a6a032f1f
Delete stale rooms/participants after RECONNECT_TIMEOUT
2022-12-13 11:32:37 +01:00
Antonio Scandurra
beea9b68ff
Allow re-joining room after server restarts
2022-12-12 16:03:21 +01:00
Antonio Scandurra
3cd77bfcc4
Always cast connection ids to i32
...
Postgres doesn't support unsigned types. This also adds indices to
support querying `project_collaborators` and `room_participants`
by connection id.
2022-12-12 11:43:08 +01:00
Antonio Scandurra
456396ca6e
Rename connection_lost
to answering_connection_lost
2022-12-12 11:43:08 +01:00
Antonio Scandurra
26b5653427
Delete hosted projects from database when connection is lost
2022-12-12 11:43:08 +01:00
Antonio Scandurra
aca3f02590
Re-join room when client temporarily loses connection
2022-12-12 11:43:08 +01:00
Joseph T. Lyons
dcd4b8f7db
Merge pull request #1941 from zed-industries/Allow-overwriting-signup-data
...
Allow overwriting signup data if a user signs up more than once with the same email address
2022-12-08 16:11:28 -05:00
Antonio Scandurra
665219fb00
Fix inviting user that had already signed up via a different email
2022-12-07 14:07:01 +01:00
Joseph Lyons
694840cdd6
Allow overwriting signup data if a user signs up more than once with the same email address
2022-12-06 17:12:12 -05:00
Antonio Scandurra
3b5b48c043
Query project count as i64 instead of i32 when gathering metrics
...
Using the latter will cause a type mismatch when performing the query.
2022-12-06 15:00:32 +01:00
Antonio Scandurra
5443d9cffe
Return project collaborators and connection IDs in a RoomGuard
2022-12-05 18:37:01 +01:00
Antonio Scandurra
eec3df09be
Upgrade sea-orm
2022-12-05 14:56:01 +01:00
Antonio Scandurra
d3c411677a
Remove random pauses to prevent the database from deadlocking
2022-12-05 12:03:45 +01:00
Antonio Scandurra
d97a8364ad
Retry transactions if there's a serialization failure during commit
2022-12-05 10:49:53 +01:00
Antonio Scandurra
0ed731780a
Remove duplication between transaction
and room_transaction
2022-12-05 09:46:03 +01:00
Antonio Scandurra
d96f524fb6
WIP: Manually rollback transactions to avoid spurious savepoint failure
...
TODO:
- Avoid unwrapping transaction after f(tx)
- Remove duplication between `transaction` and `room_transaction`
- Introduce random delay before and after committing a transaction
- Run lots of randomized tests
- Investigate diverging diagnostic summaries
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-12-02 20:36:50 +01:00
Antonio Scandurra
1c30767592
Remove stale Error
variant
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-12-02 19:20:51 +01:00
Antonio Scandurra
969c314315
Merge branch 'main' into reconnections-2
2022-12-02 19:09:33 +01:00
Antonio Scandurra
568de814aa
Delete empty rooms
2022-12-02 16:56:41 +01:00
Antonio Scandurra
27f6ae945d
Clear stale data on startup
...
This is a stopgap measure until we introduce reconnection support.
2022-12-02 16:30:00 +01:00
Antonio Scandurra
7502558631
Make all tests pass again after migration to sea-orm
2022-12-02 14:22:36 +01:00
Antonio Scandurra
48b6ee313f
Use i32 to represent Postgres INTEGER
types in Rust
2022-12-02 13:58:54 +01:00
Antonio Scandurra
dec5f37e4e
Finish porting remaining db methods to sea-orm
2022-12-02 13:58:23 +01:00
Antonio Scandurra
585ac3e1be
WIP
2022-12-01 18:39:24 +01:00
Antonio Scandurra
29a4baf346
Replace i32 with u32 for database columns
...
We never expect to return signed integers and so we shouldn't use
a signed type. I think this was a limitation of sqlx.
2022-12-01 17:47:51 +01:00
Antonio Scandurra
cfdf0a57b8
Implement Database::update_project
2022-12-01 17:36:36 +01:00
Antonio Scandurra
944d6554de
Implement Database::unshare_project
2022-12-01 16:26:13 +01:00
Antonio Scandurra
e3ac67784a
Implement Database::project_guest_connection_ids
2022-12-01 16:23:29 +01:00
Antonio Scandurra
62624b81d8
Avoid using col_expr
whenever possible
...
...and use the more type-safe `::set`.
2022-12-01 16:17:27 +01:00
Antonio Scandurra
256e3e8e0f
Get basic calls working again with sea-orm
2022-12-01 16:17:24 +01:00
Antonio Scandurra
aebc6326a9
Implement Database::create_room
2022-12-01 15:22:20 +01:00
Antonio Scandurra
db1d93576f
Go back to a compiling state, panicking on unimplemented db methods
2022-12-01 15:13:57 +01:00