Skip to content

Commit 399d72b

Browse files
Andrea Falzettiakosyakovfelladrin
committed
jetbrains: run warmup as last task
Co-authored-by: Anton Kosyakov <[email protected]> Co-authored-by: Victor Nogueira <[email protected]>
1 parent 756c5b0 commit 399d72b

7 files changed

+57
-214
lines changed

components/ide-service/pkg/server/testdata/ideconfig_happypath.golden

Lines changed: 0 additions & 93 deletions
This file was deleted.

components/ide-service/pkg/server/testdata/ideconfig_happypath_resolve.golden

Lines changed: 0 additions & 95 deletions
This file was deleted.

components/ide-service/pkg/server/testdata/ideconfig_idetype_not_correct.golden

Lines changed: 0 additions & 12 deletions
This file was deleted.

components/ide-service/pkg/server/testdata/ideconfig_idetype_unknown.golden

Lines changed: 0 additions & 12 deletions
This file was deleted.

components/ide-service/pkg/server/testdata/resolve_ws_config_referrer_invalid.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
"web_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-d6329814c2aa34c414574fd0d1301447d6fe82c9"
55
},
66
"Err": ""
7-
}
7+
}

components/ide-service/pkg/server/testdata/resolve_ws_config_regular_code.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010
"web_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-d6329814c2aa34c414574fd0d1301447d6fe82c9"
1111
},
1212
"Err": ""
13-
}
13+
}

components/ide/jetbrains/launcher/main.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,22 @@ func main() {
161161
}
162162

163163
if launchCtx.warmup {
164+
ctx, cancel := context.WithCancel(context.Background())
165+
166+
out:
167+
for {
168+
log.Debug("launcher: wait for tasks to finish before running warmup")
169+
err := waitForTasksToFinish(ctx, cancel)
170+
if err != nil {
171+
log.WithError(err).Warn("launcher: failed to observe tasks completion")
172+
}
173+
select {
174+
case <-ctx.Done():
175+
break out
176+
case <-time.After(1 * time.Second):
177+
}
178+
}
179+
164180
launch(launchCtx)
165181
return
166182
}
@@ -853,3 +869,42 @@ func resolveProjectContextDir(launchCtx *LaunchContext) string {
853869

854870
return launchCtx.projectDir
855871
}
872+
873+
func waitForTasksToFinish(ctx context.Context, cancel context.CancelFunc) error {
874+
conn, err := dial(ctx)
875+
if err != nil {
876+
return err
877+
}
878+
client := supervisor.NewStatusServiceClient(conn)
879+
tasksResponse, err := client.TasksStatus(ctx, &supervisor.TasksStatusRequest{Observe: true})
880+
if err != nil {
881+
return xerrors.Errorf("failed get tasks status client: %w", err)
882+
}
883+
for {
884+
resp, err := tasksResponse.Recv()
885+
if err != nil {
886+
return err
887+
}
888+
889+
var runningTasksCounter int
890+
for _, task := range resp.Tasks {
891+
if task.State != 2 && task.Presentation.Name != "GITPOD_JB_WARMUP_TASK" {
892+
runningTasksCounter++
893+
}
894+
}
895+
if runningTasksCounter == 0 {
896+
cancel()
897+
}
898+
899+
return nil
900+
}
901+
902+
}
903+
904+
func dial(ctx context.Context) (*grpc.ClientConn, error) {
905+
supervisorConn, err := grpc.DialContext(ctx, util.GetSupervisorAddress(), grpc.WithTransportCredentials(insecure.NewCredentials()))
906+
if err != nil {
907+
err = xerrors.Errorf("failed connecting to supervisor: %w", err)
908+
}
909+
return supervisorConn, err
910+
}

0 commit comments

Comments
 (0)