diff --git a/.github/workflows/golang-test-linux.yml b/.github/workflows/golang-test-linux.yml index efe1a2654..3be8bcff3 100644 --- a/.github/workflows/golang-test-linux.yml +++ b/.github/workflows/golang-test-linux.yml @@ -316,7 +316,7 @@ jobs: NETBIRD_STORE_ENGINE=${{ matrix.store }} \ go test -tags=devcert \ -exec "sudo --preserve-env=CI,NETBIRD_STORE_ENGINE" \ - -timeout 10m ./management/... + -timeout 20m ./management/... benchmark: name: "Management / Benchmark" @@ -508,7 +508,7 @@ jobs: NETBIRD_STORE_ENGINE=${{ matrix.store }} CI=true \ go test -tags=integration \ -exec 'sudo --preserve-env=CI,NETBIRD_STORE_ENGINE' \ - -timeout 10m ./management/... + -timeout 20m ./management/... test_client_on_docker: name: "Client (Docker) / Unit" diff --git a/management/server/store/store.go b/management/server/store/store.go index 2686c3597..ece61d1f3 100644 --- a/management/server/store/store.go +++ b/management/server/store/store.go @@ -353,12 +353,23 @@ func NewTestStoreFromSQL(ctx context.Context, filename string, dataDir string) ( return nil, nil, fmt.Errorf("failed to create test store: %v", err) } - err = addAllGroupToAccount(ctx, store) + err = addAllGroupToAccount(ctx, store) if err != nil { return nil, nil, fmt.Errorf("failed to add all group to account: %v", err) } - return getSqlStoreEngine(ctx, store, kind) + + maxRetries := 2 + for i := 0; i < maxRetries; i++ { + sqlStore, cleanUp, err := getSqlStoreEngine(ctx, store, kind) + if err == nil { + return sqlStore, cleanUp, nil + } + if i < maxRetries-1 { + time.Sleep(100 * time.Millisecond) + } + } + return nil, nil, fmt.Errorf("failed to create test store after %d attempts: %v", maxRetries, err) } func addAllGroupToAccount(ctx context.Context, store Store) error {