Skip to content

Commit 636f65a

Browse files
Merge pull request #1127 from planetscale/mscoutermarsh-patch-1
Extend timeout for database branch readiness checks
2 parents 1640432 + 0d84de7 commit 636f65a

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

internal/cmd/branch/create.go

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,12 +226,17 @@ func CreateCmd(ch *cmdutil.Helper) *cobra.Command {
226226
return cmd
227227
}
228228

229-
// waitUntilReady waits until the given database branch is ready. It times out after 3 minutes.
229+
// waitUntilReady waits until the given database branch is ready. It times out after 10 minutes.
230230
func waitUntilReady(ctx context.Context, client *ps.Client, printer *printer.Printer, debug bool, getReq *ps.GetDatabaseBranchRequest) error {
231-
ctx, cancel := context.WithTimeout(ctx, 3*time.Minute)
231+
ctx, cancel := context.WithTimeout(ctx, 10*time.Minute)
232232
defer cancel()
233233

234-
ticker := time.NewTicker(time.Second)
234+
startTime := time.Now()
235+
var ticker *time.Ticker
236+
237+
// Start with 5-second interval for the first minute
238+
ticker = time.NewTicker(5 * time.Second)
239+
defer ticker.Stop()
235240

236241
for {
237242
select {
@@ -249,15 +254,27 @@ func waitUntilReady(ctx context.Context, client *ps.Client, printer *printer.Pri
249254
if resp.Ready {
250255
return nil
251256
}
257+
258+
elapsed := time.Since(startTime)
259+
if elapsed > time.Minute {
260+
// Switch to 10-second interval after 1 minute
261+
ticker.Stop()
262+
ticker = time.NewTicker(10 * time.Second)
263+
}
252264
}
253265
}
254266
}
255267

256268
func waitUntilPostgresReady(ctx context.Context, client *ps.Client, printer *printer.Printer, debug bool, getReq *ps.GetPostgresBranchRequest) error {
257-
ctx, cancel := context.WithTimeout(ctx, 3*time.Minute)
269+
ctx, cancel := context.WithTimeout(ctx, 10*time.Minute)
258270
defer cancel()
259271

260-
ticker := time.NewTicker(time.Second)
272+
startTime := time.Now()
273+
var ticker *time.Ticker
274+
275+
// Start with 5-second interval for the first minute
276+
ticker = time.NewTicker(5 * time.Second)
277+
defer ticker.Stop()
261278

262279
for {
263280
select {
@@ -275,6 +292,13 @@ func waitUntilPostgresReady(ctx context.Context, client *ps.Client, printer *pri
275292
if resp.Ready {
276293
return nil
277294
}
295+
296+
elapsed := time.Since(startTime)
297+
if elapsed > time.Minute {
298+
// Switch to 10-second interval after 1 minute
299+
ticker.Stop()
300+
ticker = time.NewTicker(10 * time.Second)
301+
}
278302
}
279303
}
280304
}

0 commit comments

Comments
 (0)