Skip to content

Commit fa81cea

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 017cfbf commit fa81cea

7 files changed

+66
-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: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ func main() {
161161
}
162162

163163
if launchCtx.warmup {
164+
waitForTasksToFinish()
164165
launch(launchCtx)
165166
return
166167
}
@@ -853,3 +854,66 @@ func resolveProjectContextDir(launchCtx *LaunchContext) string {
853854

854855
return launchCtx.projectDir
855856
}
857+
858+
func waitForTasksToFinish() {
859+
ctx, cancel := context.WithCancel(context.Background())
860+
defer cancel()
861+
862+
var conn *grpc.ClientConn
863+
var err error
864+
865+
for {
866+
conn, err = dial(ctx)
867+
if err == nil {
868+
err = checkTasks(ctx, conn)
869+
}
870+
871+
if err == nil {
872+
return
873+
}
874+
875+
log.WithError(err).Error("launcher: failed to check tasks status")
876+
877+
select {
878+
case <-ctx.Done():
879+
return
880+
case <-time.After(1 * time.Second):
881+
}
882+
}
883+
}
884+
885+
func checkTasks(ctx context.Context, conn *grpc.ClientConn) error {
886+
client := supervisor.NewStatusServiceClient(conn)
887+
tasksResponse, err := client.TasksStatus(ctx, &supervisor.TasksStatusRequest{Observe: true})
888+
if err != nil {
889+
return xerrors.Errorf("failed get tasks status client: %w", err)
890+
}
891+
892+
for {
893+
var runningTasksCounter int
894+
895+
resp, err := tasksResponse.Recv()
896+
if err != nil {
897+
return err
898+
}
899+
900+
for _, task := range resp.Tasks {
901+
if task.State != supervisor.TaskState_closed && task.Presentation.Name != "GITPOD_JB_WARMUP_TASK" {
902+
runningTasksCounter++
903+
}
904+
}
905+
if runningTasksCounter == 0 {
906+
break
907+
}
908+
}
909+
910+
return nil
911+
}
912+
913+
func dial(ctx context.Context) (*grpc.ClientConn, error) {
914+
supervisorConn, err := grpc.DialContext(ctx, util.GetSupervisorAddress(), grpc.WithTransportCredentials(insecure.NewCredentials()))
915+
if err != nil {
916+
err = xerrors.Errorf("failed connecting to supervisor: %w", err)
917+
}
918+
return supervisorConn, err
919+
}

0 commit comments

Comments
 (0)