Skip to content

Commit 349565e

Browse files
committed
.
1 parent 399d72b commit 349565e

File tree

1 file changed

+31
-27
lines changed
  • components/ide/jetbrains/launcher

1 file changed

+31
-27
lines changed

components/ide/jetbrains/launcher/main.go

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -161,22 +161,7 @@ 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-
164+
starWarmup()
180165
launch(launchCtx)
181166
return
182167
}
@@ -187,6 +172,31 @@ func main() {
187172
serve(launchCtx)
188173
}
189174

175+
func starWarmup() {
176+
ctx, cancel := context.WithCancel(context.Background())
177+
var conn *grpc.ClientConn
178+
var err error
179+
180+
for {
181+
conn, err = dial(ctx)
182+
if err == nil {
183+
log.Debug("launcher: wait for tasks to finish before running warmup")
184+
finished, err := waitForTasksToFinish(ctx, conn)
185+
if err != nil {
186+
log.WithError(err).Warn("launcher: failed to observe tasks completion")
187+
}
188+
if finished {
189+
cancel()
190+
}
191+
}
192+
select {
193+
case <-ctx.Done():
194+
return
195+
case <-time.After(1 * time.Second):
196+
}
197+
}
198+
}
199+
190200
func serve(launchCtx *LaunchContext) {
191201
debugAgentPrefix := "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:"
192202
http.HandleFunc("/debug", func(w http.ResponseWriter, r *http.Request) {
@@ -870,20 +880,16 @@ func resolveProjectContextDir(launchCtx *LaunchContext) string {
870880
return launchCtx.projectDir
871881
}
872882

873-
func waitForTasksToFinish(ctx context.Context, cancel context.CancelFunc) error {
874-
conn, err := dial(ctx)
875-
if err != nil {
876-
return err
877-
}
883+
func waitForTasksToFinish(ctx context.Context, conn *grpc.ClientConn) (bool, error) {
878884
client := supervisor.NewStatusServiceClient(conn)
879885
tasksResponse, err := client.TasksStatus(ctx, &supervisor.TasksStatusRequest{Observe: true})
880886
if err != nil {
881-
return xerrors.Errorf("failed get tasks status client: %w", err)
887+
return false, xerrors.Errorf("failed get tasks status client: %w", err)
882888
}
883889
for {
884890
resp, err := tasksResponse.Recv()
885891
if err != nil {
886-
return err
892+
return false, err
887893
}
888894

889895
var runningTasksCounter int
@@ -893,12 +899,10 @@ func waitForTasksToFinish(ctx context.Context, cancel context.CancelFunc) error
893899
}
894900
}
895901
if runningTasksCounter == 0 {
896-
cancel()
902+
return true, nil
897903
}
898-
899-
return nil
900904
}
901-
905+
return false, nil
902906
}
903907

904908
func dial(ctx context.Context) (*grpc.ClientConn, error) {

0 commit comments

Comments
 (0)