Nathan Sobo
1006ada458
Update scan_id on worktree entries when there is a conflict
...
Forgetting to do this meant we were unable to sync changes with reconnecting
guests in some cases.
2023-01-04 13:59:16 -07:00
Nathan Sobo
789bbf15b7
Update buffer files when synchronizing buffers
...
It's possible that the host was disconnected when attempting to notify
guests of a file save, so we need to transmit this in order to correctly
update the file's mtime.
Next failing seed OPERATIONS=200 SEED=6894
2023-01-04 12:33:48 -07:00
Nathan Sobo
1dd085fc92
Introduce completed_scan_id to worktree
...
We need to know the most recent scan id we have actually completed. This is to
handle the case where a guest disconnects when we're in the middle of streaming
worktree entries to them. When they reconnect, they need to report a scan_id
from before we started streaming the entries, because we have no record of when
the stream was interrupted.
Next failure:
SEED=5051 ITERATIONS=1 OPERATIONS=200 cargo test --release --package=collab random -- --nocapture
2023-01-03 18:26:57 -07:00
Nathan Sobo
90fb9b53ad
WIP
2023-01-03 13:30:14 -07:00
Nathan Sobo
8d70a22fa3
Record failing seed
2023-01-02 21:12:39 -07:00
Nathan Sobo
a6ffcdd0cf
Track open buffers when handling sync requests
...
When a host sends a buffer to a guest for the first time, they record that
they have done so in a set tied to that guest's peer id. When the guest
reconnects and syncs buffers, they do so under a different peer id, so we
need to be sure we track which buffers we have sent them to avoid sending
them the same buffer twice, which violates the guest's assumptions.
2023-01-02 20:27:59 -07:00
Max Brunsfeld
74843493f4
Assign fake fs entries' mtimes more consistently
2023-01-02 10:20:52 -08:00
Nathan Sobo
f3dee2d332
Remove printlns, found a failure
...
Failing seed:
SEED=416 MAX_PEERS=2 ITERATIONS=5000 OPERATIONS=159 cargo +beta test --package=collab random -- --nocapture
2022-12-27 17:01:31 -07:00
Nathan Sobo
273988b8d5
Set transaction group interval to ZERO by default in tests
...
We were seeing non-deterministic behavior in randomized tests when
generating backtraces took enough time to cause transactions to group
in some cases, but not group in others.
Tests will need to explicitly opt into grouping if they want it by
setting the interval explicitly. We have tests in the text module that
currently test the history grouping explicitly, but I'm not sure
it's needed elsewhere.
2022-12-27 16:47:28 -07:00
Max Brunsfeld
599acf0daa
WIP - Panic immediately when detecting non-determinism via a change to the execution trace
2022-12-23 17:34:13 -08:00
Antonio Scandurra
6458a9144e
WIP: failing randomized test
...
SEED=175 MAX_PEERS=2 ITERATIONS=1 OPERATIONS=159 cargo test --package=collab random -- --nocapture
2022-12-23 15:02:06 +01:00
Antonio Scandurra
344d05045d
Avoid hanging waiting for operations when buffer has none
2022-12-23 12:26:48 +01:00
Antonio Scandurra
75803d8dbb
Respond with an error when client hasn't got a registered handle
2022-12-23 11:53:13 +01:00
Max Brunsfeld
42e74e7eef
Excluded deleted entries when initially sending worktrees to guests
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-12-22 11:18:10 -08:00
Antonio Scandurra
738e161bc6
WIP: failing test
...
SEED=882 RUST_LOG=collab::tests::randomized_integration_tests=info MAX_PEERS=2 ITERATIONS=1 OPERATIONS=49 cargo test --package=collab random -- --nocapture
2022-12-22 18:32:21 +01:00
Antonio Scandurra
559e14799c
Restructure randomized test to be a bit clearer and test more stuff
2022-12-22 17:54:25 +01:00
Max Brunsfeld
d750b02a7c
Handle file and diff updates to incomplete buffers
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-12-21 15:39:57 -08:00
Max Brunsfeld
c321f5d94a
Assert that buffers' file state matches in randomized collab test
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-12-21 15:38:44 -08:00
Max Brunsfeld
89da738fae
In randomized test, open remote projects via the room
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-12-21 14:13:43 -08:00
Max Brunsfeld
8cd94060bb
💄 Avoid referring to all clients as guests in random integration test
2022-12-21 11:37:18 -08:00
Max Brunsfeld
d8ccdff9fc
Move randomized integration test into its own file
2022-12-21 11:26:24 -08:00
Antonio Scandurra
47348542ef
Synchronize buffers when either the host or a guest reconnects
2022-12-21 14:20:56 +01:00
Antonio Scandurra
b5fb8e6b8b
Remove unused JoinProjectError
2022-12-21 13:10:07 +01:00
Antonio Scandurra
b0336cd27e
Add failing test for buffer synchronization after disconnecting
2022-12-21 11:56:15 +01:00
Antonio Scandurra
ecd80c553c
Verify removing worktrees while host is offline
2022-12-21 11:47:01 +01:00
Antonio Scandurra
59d7f06c57
Handle proto::UpdateProjectCollaborator
message in Project
2022-12-21 11:09:27 +01:00
Max Brunsfeld
15f666a50a
Refresh project collaborator connection id for rejoined projects
2022-12-20 18:03:33 -08:00
Max Brunsfeld
ec6f2a3ad4
💄 Reorder private Project method
2022-12-20 17:32:42 -08:00
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
cb8962691a
Remove unnecessary UnshareProject message sent to clients leaving a project
2022-12-20 16:58:44 -08:00
Max Brunsfeld
bb00134f5f
Clean up projects when leaving a room
2022-12-20 16:44:57 -08:00
Max Brunsfeld
21d6665c37
Merge branch 'main' into project-reconnection
2022-12-20 15:50:09 -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
9d15b3d295
Remove unused import
2022-12-20 17:47:22 +01: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
70dd586be9
Start work on rejoining rooms, supplying all project info at once
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-12-19 17:50:43 -08:00
Max Brunsfeld
af85db9ea5
WIP - Retain hosts' project state when they disconnect
2022-12-19 11:38:08 -08:00
Max Brunsfeld
67b265b3d5
Add failing integration test for resharing projects on reconnect
2022-12-19 11:37:28 -08:00
Max Brunsfeld
c8b209306e
collab 0.4.2
2022-12-19 11:29:22 -08:00
Max Brunsfeld
61c6c825b5
Merge pull request #1980 from zed-industries/following-panics
...
Fix panics when following
2022-12-19 11:26:28 -08:00
Antonio Scandurra
0ede89d82a
WIP
2022-12-19 20:05:00 +01:00
Julia
6f211292b2
Merge pull request #1984 from zed-industries/format-problematic-db-macros
...
Format problematic DB macros
2022-12-19 11:17:34 -05:00
Julia
c49573dc11
Format problematic DB macros
2022-12-19 11:11:10 -05:00
Julia
de9c58d216
Merge pull request #1983 from zed-industries/multi-buffer-git-gutter
...
Multi buffer git gutter
2022-12-19 10:53:42 -05:00