Skip to content

Commit 2987dcb

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 2987dcb

8 files changed

+71
-7
lines changed

components/ide-service/BUILD.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ packages:
3535
scripts:
3636
- name: gen-golden-files
3737
script: |
38-
go test -timeout 30s -run ^TestResolveWorkspaceConfig$ github.com/gitpod-io/gitpod/ide-service/pkg/server --force --update
38+
go test -timeout 30s -run ./... github.com/gitpod-io/gitpod/ide-service/pkg/server --force --update

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,4 @@
9090
}
9191
},
9292
"Err": ""
93-
}
93+
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,4 @@
9292
}
9393
},
9494
"Err": ""
95-
}
95+
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
}
1010
},
1111
"Err": "invalid ide config: DefaultDesktopIde should be desktop but browser"
12-
}
12+
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
}
1010
},
1111
"Err": "invalid ide config"
12-
}
12+
}

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

+1-1
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

+1-1
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

+64
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)