diff --git a/cli/server.go b/cli/server.go index aa0a010eb0aa4..d678eb49c83c0 100644 --- a/cli/server.go +++ b/cli/server.go @@ -61,7 +61,6 @@ import ( "github.com/coder/serpent" "github.com/coder/wgtunnel/tunnelsdk" - "github.com/coder/coder/v2/coderd/cryptokeys" "github.com/coder/coder/v2/coderd/entitlements" "github.com/coder/coder/v2/coderd/notifications/reports" "github.com/coder/coder/v2/coderd/runtimeconfig" @@ -754,25 +753,6 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd. return xerrors.Errorf("set deployment id: %w", err) } - fetcher := &cryptokeys.DBFetcher{ - DB: options.Database, - } - - resumeKeycache, err := cryptokeys.NewSigningCache(ctx, - logger, - fetcher, - codersdk.CryptoKeyFeatureTailnetResume, - ) - if err != nil { - logger.Critical(ctx, "failed to properly instantiate tailnet resume signing cache", slog.Error(err)) - } - - options.CoordinatorResumeTokenProvider = tailnet.NewResumeTokenKeyProvider( - resumeKeycache, - quartz.NewReal(), - tailnet.DefaultResumeTokenExpiry, - ) - options.RuntimeConfig = runtimeconfig.NewManager() // This should be output before the logs start streaming. diff --git a/coderd/coderd.go b/coderd/coderd.go index 75e588e89624b..bc4afa44c88df 100644 --- a/coderd/coderd.go +++ b/coderd/coderd.go @@ -467,7 +467,7 @@ func New(options *Options) *API { codersdk.CryptoKeyFeatureOIDCConvert, ) if err != nil { - options.Logger.Critical(ctx, "failed to properly instantiate oidc convert signing cache", slog.Error(err)) + options.Logger.Fatal(ctx, "failed to properly instantiate oidc convert signing cache", slog.Error(err)) } } @@ -478,7 +478,7 @@ func New(options *Options) *API { codersdk.CryptoKeyFeatureWorkspaceAppsToken, ) if err != nil { - options.Logger.Critical(ctx, "failed to properly instantiate app signing key cache", slog.Error(err)) + options.Logger.Fatal(ctx, "failed to properly instantiate app signing key cache", slog.Error(err)) } } @@ -489,10 +489,30 @@ func New(options *Options) *API { codersdk.CryptoKeyFeatureWorkspaceAppsAPIKey, ) if err != nil { - options.Logger.Critical(ctx, "failed to properly instantiate app encryption key cache", slog.Error(err)) + options.Logger.Fatal(ctx, "failed to properly instantiate app encryption key cache", slog.Error(err)) } } + if options.CoordinatorResumeTokenProvider == nil { + fetcher := &cryptokeys.DBFetcher{ + DB: options.Database, + } + + resumeKeycache, err := cryptokeys.NewSigningCache(ctx, + options.Logger, + fetcher, + codersdk.CryptoKeyFeatureTailnetResume, + ) + if err != nil { + options.Logger.Fatal(ctx, "failed to properly instantiate tailnet resume signing cache", slog.Error(err)) + } + options.CoordinatorResumeTokenProvider = tailnet.NewResumeTokenKeyProvider( + resumeKeycache, + options.Clock, + tailnet.DefaultResumeTokenExpiry, + ) + } + updatesProvider := NewUpdatesProvider(options.Logger.Named("workspace_updates"), options.Pubsub, options.Database, options.Authorizer) // Start a background process that rotates keys. We intentionally start this after the caches