mirror of
https://github.com/zitadel/zitadel.git
synced 2025-03-01 03:27:23 +00:00

# Which Problems Are Solved Zitadel currently uses 3 database pool, 1 for queries, 1 for pushing events and 1 for scheduled projection updates. This defeats the purpose of a connection pool which already handles multiple connections. During load tests we found that the current structure of connection pools consumes a lot of database resources. The resource usage dropped after we reduced the amount of database pools to 1 because existing connections can be used more efficiently. # How the Problems Are Solved Removed logic to handle multiple connection pools and use a single one. # Additional Changes none # Additional Context part of https://github.com/zitadel/zitadel/issues/8352
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package setup
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
"github.com/zitadel/logging"
|
|
|
|
"github.com/zitadel/zitadel/internal/database"
|
|
"github.com/zitadel/zitadel/internal/eventstore"
|
|
old_es "github.com/zitadel/zitadel/internal/eventstore/repository/sql"
|
|
new_es "github.com/zitadel/zitadel/internal/eventstore/v3"
|
|
"github.com/zitadel/zitadel/internal/migration"
|
|
)
|
|
|
|
func NewCleanup() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "cleanup",
|
|
Short: "cleans up migration if they got stuck",
|
|
Long: `cleans up migration if they got stuck`,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
config := MustNewConfig(viper.GetViper())
|
|
Cleanup(config)
|
|
},
|
|
}
|
|
}
|
|
|
|
func Cleanup(config *Config) {
|
|
ctx := context.Background()
|
|
|
|
logging.Info("cleanup started")
|
|
|
|
dbClient, err := database.Connect(config.Database, false)
|
|
logging.OnError(err).Fatal("unable to connect to database")
|
|
|
|
config.Eventstore.Pusher = new_es.NewEventstore(dbClient)
|
|
config.Eventstore.Querier = old_es.NewCRDB(dbClient)
|
|
es := eventstore.NewEventstore(config.Eventstore)
|
|
|
|
step, err := migration.LastStuckStep(ctx, es)
|
|
logging.OnError(err).Fatal("unable to query latest migration")
|
|
|
|
if step == nil {
|
|
logging.Info("there is no stuck migration please run `zitadel setup`")
|
|
return
|
|
}
|
|
|
|
logging.WithFields("name", step.Name).Info("cleanup migration")
|
|
|
|
err = migration.CancelStep(ctx, es, step)
|
|
logging.OnError(err).Fatal("cleanup migration failed please retry")
|
|
}
|