Skip to content

Commit 146d907

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 146d907

7 files changed

+65
-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: 63 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,65 @@ 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+
log.WithError(err).Warn("launcher: failed to dial supervisor to observe tasks completion")
869+
} else {
870+
log.Debug("launcher: wait for tasks to finish before running warmup")
871+
err = checkTasks(ctx, conn)
872+
if err != nil {
873+
log.WithError(err).Warn("launcher: failed to check tasks status")
874+
}
875+
}
876+
select {
877+
case <-ctx.Done():
878+
return
879+
case <-time.After(1 * time.Second):
880+
}
881+
}
882+
}
883+
884+
func checkTasks(ctx context.Context, conn *grpc.ClientConn) error {
885+
client := supervisor.NewStatusServiceClient(conn)
886+
tasksResponse, err := client.TasksStatus(ctx, &supervisor.TasksStatusRequest{Observe: true})
887+
if err != nil {
888+
return xerrors.Errorf("failed get tasks status client: %w", err)
889+
}
890+
891+
var runningTasksCounter int
892+
893+
for {
894+
resp, err := tasksResponse.Recv()
895+
if err != nil {
896+
return err
897+
}
898+
899+
for _, task := range resp.Tasks {
900+
if task.State != 2 && task.Presentation.Name != "GITPOD_JB_WARMUP_TASK" {
901+
runningTasksCounter++
902+
}
903+
}
904+
if runningTasksCounter == 0 {
905+
break
906+
}
907+
}
908+
909+
return nil
910+
}
911+
912+
func dial(ctx context.Context) (*grpc.ClientConn, error) {
913+
supervisorConn, err := grpc.DialContext(ctx, util.GetSupervisorAddress(), grpc.WithTransportCredentials(insecure.NewCredentials()))
914+
if err != nil {
915+
err = xerrors.Errorf("failed connecting to supervisor: %w", err)
916+
}
917+
return supervisorConn, err
918+
}

0 commit comments

Comments
 (0)