fix(tsnet): add timeout handling for tsnet server initialization

This commit is contained in:
nullcat
2026-05-30 17:10:47 +08:00
parent c853084a7b
commit bcbe8fb5e3
2 changed files with 10 additions and 1 deletions
+4 -1
View File
@@ -4,6 +4,7 @@ import (
"context" "context"
fmt2 "fmt" fmt2 "fmt"
"log/slog" "log/slog"
"time"
"tailscale.com/ipn" "tailscale.com/ipn"
@@ -40,7 +41,9 @@ func InitTsNet(ctx context.Context, cfg *Core, logger *slog.Logger, withDebugLog
return nil, err return nil, err
} }
status, err := srv.Up(ctx) cnclCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
defer cancel()
status, err := srv.Up(cnclCtx)
if err != nil { if err != nil {
logger.With(slog.String("error", err.Error())).Error("bring up tsnet server failed") logger.With(slog.String("error", err.Error())).Error("bring up tsnet server failed")
return nil, err return nil, err
+6
View File
@@ -2,6 +2,7 @@ package main
import ( import (
"context" "context"
"errors"
"flag" "flag"
"log/slog" "log/slog"
"os" "os"
@@ -21,9 +22,14 @@ func serviceLogic(configPath string, isTsnetDebug bool, logger *slog.Logger) boo
} }
ctx, cancelAll := context.WithCancel(context.Background()) ctx, cancelAll := context.WithCancel(context.Background())
defer cancelAll()
logger.Info("initializing tsnet server") logger.Info("initializing tsnet server")
srv, err := core.InitTsNet(ctx, &cfg.Core, logger, isTsnetDebug) srv, err := core.InitTsNet(ctx, &cfg.Core, logger, isTsnetDebug)
if err != nil { if err != nil {
if errors.Is(err, context.DeadlineExceeded) {
logger.Debug("tsnet initialization timed out, retrying")
return false
}
logger.With( logger.With(
slog.String("error", err.Error())).Error("Error initializing tsnet") slog.String("error", err.Error())).Error("Error initializing tsnet")
os.Exit(1) os.Exit(1)