@@ -34,6 +34,7 @@ import (
3434 "github.com/buildbuddy-io/buildbuddy/server/util/bazel"
3535 "github.com/buildbuddy-io/buildbuddy/server/util/error_util"
3636 "github.com/buildbuddy-io/buildbuddy/server/util/grpc_client"
37+ "github.com/buildbuddy-io/buildbuddy/server/util/retry"
3738 "github.com/buildbuddy-io/buildbuddy/server/util/rexec"
3839 "github.com/buildbuddy-io/buildbuddy/server/util/shlex"
3940 "github.com/buildbuddy-io/buildbuddy/server/util/status"
@@ -1100,23 +1101,24 @@ func attemptRun(ctx context.Context, bbClient bbspb.BuildBuddyServiceClient, exe
11001101 return nil
11011102 })
11021103 eg .Go (func () error {
1103- var execution * espb.GetExecutionResponse
1104- for {
1105- var err error
1106- execution , err = bbClient .GetExecution (ctx , & espb.GetExecutionRequest {ExecutionLookup : & espb.ExecutionLookup {
1104+ execution , err := retry .Do (ctx , & retry.Options {
1105+ InitialBackoff : 500 * time .Millisecond ,
1106+ MaxBackoff : 5 * time .Second ,
1107+ Multiplier : 2 ,
1108+ }, func (ctx context.Context ) (* espb.GetExecutionResponse , error ) {
1109+ execution , err := bbClient .GetExecution (ctx , & espb.GetExecutionRequest {ExecutionLookup : & espb.ExecutionLookup {
11071110 InvocationId : iid ,
11081111 }})
11091112 if err != nil {
1110- return fmt .Errorf ("could not retrieve ci_runner execution: %w" , err )
1113+ return nil , retry . NonRetryableError ( fmt .Errorf ("could not retrieve ci_runner execution: %w" , err ) )
11111114 }
1112- if len (execution .GetExecution ()) > 0 {
1113- break
1114- }
1115- select {
1116- case <- ctx .Done ():
1117- return ctx .Err ()
1118- case <- time .After (500 * time .Millisecond ):
1115+ if len (execution .GetExecution ()) == 0 {
1116+ return nil , fmt .Errorf ("ci_runner execution not found yet" )
11191117 }
1118+ return execution , nil
1119+ })
1120+ if err != nil {
1121+ return err
11201122 }
11211123 executionID := execution .GetExecution ()[0 ].GetExecutionId ()
11221124 waitExecutionStream , err := execClient .WaitExecution (ctx , & repb.WaitExecutionRequest {
0 commit comments