-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Make TakeSnapshot more reliable #6144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/werft run 👍 started the job as gitpod-build-gpl-5862-snapshot.5 |
0f0db41
to
ccff46b
Compare
ccff46b
to
61c9cef
Compare
a6fa036
to
d04812d
Compare
61ca4b1
to
c19e486
Compare
Codecov Report
@@ Coverage Diff @@
## main #6144 +/- ##
===========================================
+ Coverage 19.04% 33.48% +14.43%
===========================================
Files 2 23 +21
Lines 168 4680 +4512
===========================================
+ Hits 32 1567 +1535
- Misses 134 2988 +2854
- Partials 2 125 +123
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
4f87159
to
0e47cfc
Compare
13514a5
to
0491ef5
Compare
/werft run 👍 started the job as gitpod-build-gpl-5862-snapshot.45 another try--- |
0491ef5
to
ef7cdd5
Compare
/werft run 👍 started the job as gitpod-build-gpl-5862-snapshot.47 ...and again |
/werft run with-clean-slate-deployment 👍 started the job as gitpod-build-gpl-5862-snapshot.48 The best things come in threes. 🤞 |
8f4fe1c
to
9ed6299
Compare
/unhold Ready to merge now |
/lgtm |
LGTM label has been added. Git tree hash: e74e73cd5ea3964fe6b81a871af7253bdf9429f6
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tried this for a workspace larger than 3.5GB which used to fail and worked as expected! 🔮
Thanks @geropl! 🏁
did not test, but API and service changes lgtm /lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: csweichel, JanKoehnlein Associated issue: #5862 The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
I can't wait for this feature to be working again 🎉 |
Thanks, @shaal! The fix should probably land in production within a week. FYI, we're trying to get better at deploying to production sooner and more often. |
@gtsiolis Just to clarify: This PR is just introducing the server/workspace changes. IDE change will land later, I expect next week. |
It's the same issue: #5862 Draft PR is here: gitpod-io/openvscode-server#169 |
Description
This fixes #5862 by following this idea: #5862 (comment)
In detail
state: 'pending' | 'error' | 'available''
field toSnapshot
(+message
andavailableTime
)content-service.WorkspaceSnapshotExists
ws-daemon.TakeSnapshot
returns earlyserver.waitForSnapshot
SnapshotService
toserver
which is responsible for making sure allserver.takeSnapshot
to:ws-daemon
, stored that in the DB (with state: 'pending') and return thesnapshotId
SnapshotService
monitors this DB entry and regularly checks if it's done or timed out, resulting in an update to the DBsnapshotId
and have to callserver.waitForSnapshot
to wait for the snapshot to becomeavailable
(orerror
in case sth went south). This internally waits for the same PromiseSnapshotService
is already drivingRegarding deployment
This change has breaking changes to IDE and workspace. To untangle and make the deployment as easy as possible:
server
and workspace are fully backwards-compatible to each other;server
API is backwards compatible as well. Thus we have to make sure meta is deployed before IDE, the rest does not matter.Related Issue(s)
Fixes #5862
IDE companion PR: gitpod-io/openvscode-server#169
How to test
kubectl rollout restart deployment proxy
kubectl rollout restart deployment proxy
from the dev workspace (this simulates ws connection loss)note how the snapshot process is not interrupted in the IDE of the test workspace2mins the snapshot is successfultest the snapshot link and note that it worksRelease Notes
Documentation