feat: add nats experiment (#25703)

This commit is contained in:
Jon Ayers
2026-06-03 15:37:19 -05:00
committed by GitHub
parent c895ab7e5b
commit 167ac7b879
20 changed files with 702 additions and 107 deletions
+25 -5
View File
@@ -7,6 +7,7 @@ import (
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
"crypto/sha256"
"crypto/tls"
"crypto/x509"
"database/sql"
@@ -97,6 +98,7 @@ import (
"github.com/coder/coder/v2/coderd/workspaceapps/appurl"
"github.com/coder/coder/v2/coderd/workspacestats"
"github.com/coder/coder/v2/coderd/wsbuilder"
"github.com/coder/coder/v2/coderd/x/nats"
"github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/codersdk/drpcsdk"
"github.com/coder/coder/v2/cryptorand"
@@ -777,16 +779,34 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
}
options.Database = database.New(sqlDB)
ps, err := pubsub.New(ctx, logger.Named("pubsub"), sqlDB, dbURL)
experiments := coderd.ReadExperiments(options.Logger, options.DeploymentValues.Experiments.Value())
pgPubsub, err := pubsub.New(ctx, logger.Named("pubsub"), sqlDB, dbURL)
if err != nil {
return xerrors.Errorf("create pubsub: %w", err)
}
options.Pubsub = ps
options.Pubsub = pgPubsub
options.ReplicaSyncPubsub = pgPubsub
defer pgPubsub.Close()
if options.DeploymentValues.Prometheus.Enable {
options.PrometheusRegistry.MustRegister(ps)
options.PrometheusRegistry.MustRegister(pgPubsub)
}
defer options.Pubsub.Close()
psWatchdog := pubsub.NewWatchdog(ctx, logger.Named("pswatch"), ps)
// Use NATS for pubsub if the experiment is enabled.
if experiments.Enabled(codersdk.ExperimentNATSPubsub) {
token := fmt.Sprintf("%x", sha256.Sum256([]byte(dbURL)))
natsps, err := nats.New(ctx, logger.Named("pubsub"), nats.Options{
ClusterAuthToken: token,
})
if err != nil {
return xerrors.Errorf("create nats pubsub: %w", err)
}
options.Pubsub = natsps
defer natsps.Close()
}
psWatchdog := pubsub.NewWatchdog(ctx, logger.Named("pswatch"), options.Pubsub)
pubsubWatchdogTimeout = psWatchdog.Timeout()
defer psWatchdog.Close()