mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:37:32 +00:00
feat: save last occurrence of failed events and fix instance filtering (#4710)
* fix: filter failed events and current sequence correctly * fix failed events sorting column * feat: save last occurrence of failed event * fix failedEvents query and update sql statements * change sql statement to only create index * fix linting * fix linting * Update internal/query/failed_events.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * update job name on test-docs to match the one from test-code Co-authored-by: Silvan <silvan.reusser@gmail.com>
This commit is contained in:
25
cmd/setup/05.go
Normal file
25
cmd/setup/05.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package setup
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
_ "embed"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed 05.sql
|
||||
lastFailedStmts string
|
||||
)
|
||||
|
||||
type LastFailed struct {
|
||||
dbClient *sql.DB
|
||||
}
|
||||
|
||||
func (mig *LastFailed) Execute(ctx context.Context) error {
|
||||
_, err := mig.dbClient.ExecContext(ctx, lastFailedStmts)
|
||||
return err
|
||||
}
|
||||
|
||||
func (mig *LastFailed) String() string {
|
||||
return "05_last_failed"
|
||||
}
|
11
cmd/setup/05.sql
Normal file
11
cmd/setup/05.sql
Normal file
@@ -0,0 +1,11 @@
|
||||
CREATE INDEX instance_id_idx ON adminapi.current_sequences (instance_id);
|
||||
CREATE INDEX instance_id_idx ON auth.current_sequences (instance_id);
|
||||
CREATE INDEX instance_id_idx ON projections.current_sequences (instance_id);
|
||||
|
||||
CREATE INDEX instance_id_idx ON adminapi.failed_events (instance_id);
|
||||
CREATE INDEX instance_id_idx ON auth.failed_events (instance_id);
|
||||
CREATE INDEX instance_id_idx ON projections.failed_events (instance_id);
|
||||
|
||||
ALTER TABLE adminapi.failed_events ADD COLUMN last_failed TIMESTAMPTZ;
|
||||
ALTER TABLE auth.failed_events ADD COLUMN last_failed TIMESTAMPTZ;
|
||||
ALTER TABLE projections.failed_events ADD COLUMN last_failed TIMESTAMPTZ;
|
@@ -58,6 +58,7 @@ type Steps struct {
|
||||
s2AssetsTable *AssetTable
|
||||
FirstInstance *FirstInstance
|
||||
s4EventstoreIndexes *EventstoreIndexes
|
||||
s5LastFailed *LastFailed
|
||||
}
|
||||
|
||||
type encryptionKeyConfig struct {
|
||||
|
@@ -82,6 +82,7 @@ func Setup(config *Config, steps *Steps, masterKey string) {
|
||||
steps.FirstInstance.externalPort = config.ExternalPort
|
||||
|
||||
steps.s4EventstoreIndexes = &EventstoreIndexes{dbClient: dbClient, dbType: config.Database.Type()}
|
||||
steps.s5LastFailed = &LastFailed{dbClient: dbClient}
|
||||
|
||||
err = projection.Create(ctx, dbClient, eventstoreClient, config.Projections, nil, nil)
|
||||
logging.OnError(err).Fatal("unable to start projections")
|
||||
@@ -107,6 +108,8 @@ func Setup(config *Config, steps *Steps, masterKey string) {
|
||||
logging.OnError(err).Fatal("unable to migrate step 3")
|
||||
err = migration.Migrate(ctx, eventstoreClient, steps.s4EventstoreIndexes)
|
||||
logging.OnError(err).Fatal("unable to migrate step 4")
|
||||
err = migration.Migrate(ctx, eventstoreClient, steps.s5LastFailed)
|
||||
logging.OnError(err).Fatal("unable to migrate step 5")
|
||||
|
||||
for _, repeatableStep := range repeatableSteps {
|
||||
err = migration.Migrate(ctx, eventstoreClient, repeatableStep)
|
||||
|
Reference in New Issue
Block a user