MCPcopy Create free account
hub / github.com/compozy/agh / waitForSettingsRestart

Function waitForSettingsRestart

internal/cli/update.go:344–385  ·  view source on GitHub ↗
(
	ctx context.Context,
	deps commandDeps,
	client DaemonClient,
	operationID string,
)

Source from the content-addressed store, hash-verified

342}
343
344func waitForSettingsRestart(
345 ctx context.Context,
346 deps commandDeps,
347 client DaemonClient,
348 operationID string,
349) (SettingsRestartStatusRecord, error) {
350 waitCtx := ctx
351 if waitCtx == nil {
352 waitCtx = context.Background()
353 }
354 if _, hasDeadline := waitCtx.Deadline(); !hasDeadline {
355 timeout := settingsRestartTimeout(deps)
356 var cancel context.CancelFunc
357 waitCtx, cancel = context.WithTimeout(waitCtx, timeout)
358 defer cancel()
359 }
360
361 ticker := time.NewTicker(deps.pollInterval)
362 defer ticker.Stop()
363
364 for {
365 select {
366 case <-waitCtx.Done():
367 return SettingsRestartStatusRecord{}, errors.New("cli: daemon restart did not complete before timeout")
368 case <-ticker.C:
369 status, err := client.GetSettingsRestartStatus(waitCtx, operationID)
370 if err != nil {
371 continue
372 }
373 switch strings.TrimSpace(string(status.Status)) {
374 case restartStatusReady:
375 return status, nil
376 case restartStatusFailed:
377 reason := strings.TrimSpace(status.FailureReason)
378 if reason == "" {
379 reason = "daemon restart failed"
380 }
381 return status, errors.New("cli: " + reason)
382 }
383 }
384 }
385}
386
387func settingsRestartTimeout(deps commandDeps) time.Duration {
388 timeout := defaultSettingsRestartTimeout

Callers 1

restartDaemonAfterUpdateFunction · 0.85

Calls 4

settingsRestartTimeoutFunction · 0.85
StopMethod · 0.65
DoneMethod · 0.65

Tested by

no test coverage detected