From 92f0cf018f355693f763b265efb74c64f63beed5 Mon Sep 17 00:00:00 2001 From: Silvan <27845747+adlerhurst@users.noreply.github.com> Date: Thu, 6 Mar 2025 07:26:33 +0100 Subject: [PATCH] fix(cmd): clarify notification config handling (#9459) # Which Problems Are Solved If configuration `notifications.LegacyEnabled` is set to false when using cockroachdb as a database Zitadel start does not work and prints the following error: `level=fatal msg="unable to start zitadel" caller="github.com/zitadel/zitadel/cmd/start/start_from_init.go:44" error="can't scan into dest[0]: cannot scan NULL into *string"` # How the Problems Are Solved The combination of the setting and cockraochdb are checked and a better error is provided to the user. # Additional Context - introduced with https://github.com/zitadel/zitadel/pull/9321 --- cmd/setup/setup.go | 6 +++++- cmd/start/start.go | 4 ++++ internal/queue/queue.go | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cmd/setup/setup.go b/cmd/setup/setup.go index b693df3022..9d57928d06 100644 --- a/cmd/setup/setup.go +++ b/cmd/setup/setup.go @@ -467,10 +467,14 @@ func startCommandsQueries( config.DefaultInstance.SecretGenerators, ) logging.OnError(err).Fatal("unable to start commands") + + if !config.Notifications.LegacyEnabled && dbClient.Type() == "cockroach" { + logging.Fatal("notifications must be set to LegacyEnabled=true when using CockroachDB") + } q, err := queue.NewQueue(&queue.Config{ Client: dbClient, }) - logging.OnError(err).Fatal("unable to start queue") + logging.OnError(err).Fatal("unable to init queue") notify_handler.Register( ctx, diff --git a/cmd/start/start.go b/cmd/start/start.go index b12dde2182..76ffdb8921 100644 --- a/cmd/start/start.go +++ b/cmd/start/start.go @@ -4,6 +4,7 @@ import ( "context" "crypto/tls" _ "embed" + "errors" "fmt" "math" "net/http" @@ -268,6 +269,9 @@ func startZitadel(ctx context.Context, config *Config, masterKey string, server actionsLogstoreSvc := logstore.New(queries, actionsExecutionDBEmitter, actionsExecutionStdoutEmitter) actions.SetLogstoreService(actionsLogstoreSvc) + if !config.Notifications.LegacyEnabled && dbClient.Type() == "cockroach" { + return errors.New("notifications must be set to LegacyEnabled=true when using CockroachDB") + } q, err := queue.NewQueue(&queue.Config{ Client: dbClient, }) diff --git a/internal/queue/queue.go b/internal/queue/queue.go index d680221753..b45a7eb8cb 100644 --- a/internal/queue/queue.go +++ b/internal/queue/queue.go @@ -27,6 +27,9 @@ type Config struct { } func NewQueue(config *Config) (_ *Queue, err error) { + if config.Client.Type() == "cockroach" { + return nil, nil + } return &Queue{ driver: riverpgxv5.New(config.Client.Pool), config: &river.Config{