Skip to content

Commit e5a93e6

Browse files
tronghnmortenlj
andcommitted
promote: retry on any failure, now with break condition
Co-authored-by: Morten Lied Johansen <[email protected]>
1 parent 241c87b commit e5a93e6

File tree

1 file changed

+14
-17
lines changed

1 file changed

+14
-17
lines changed

internal/pkg/promote/promote.go

+14-17
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package promote
22

33
import (
4-
monitoring "cloud.google.com/go/monitoring/apiv3/v2"
5-
"cloud.google.com/go/monitoring/apiv3/v2/monitoringpb"
64
"context"
75
"errors"
86
"fmt"
7+
"time"
8+
9+
monitoring "cloud.google.com/go/monitoring/apiv3/v2"
10+
"cloud.google.com/go/monitoring/apiv3/v2/monitoringpb"
911
"github.com/nais/cloudsql-migrator/internal/pkg/common_main"
1012
"github.com/nais/cloudsql-migrator/internal/pkg/instance"
1113
"github.com/nais/cloudsql-migrator/internal/pkg/resolved"
1214
"google.golang.org/api/datamigration/v1"
13-
"google.golang.org/api/googleapi"
1415
"google.golang.org/api/iterator"
15-
"net/http"
16-
"time"
1716
)
1817

1918
const MigrationJobRetries = 3
@@ -50,10 +49,8 @@ func CheckReadyForPromotion(ctx context.Context, source, target *resolved.Instan
5049
func getMigrationJobWithRetry(ctx context.Context, migrationName string, gcpProject *resolved.GcpProject, mgr *common_main.Manager, retries int) (*datamigration.MigrationJob, error) {
5150
migrationJob, err := mgr.DatamigrationService.Projects.Locations.MigrationJobs.Get(gcpProject.GcpComponentURI("migrationJobs", migrationName)).Context(ctx).Do()
5251
if err != nil {
53-
var ae *googleapi.Error
54-
ok := errors.As(err, &ae)
55-
if ok && ae.Code == http.StatusForbidden {
56-
mgr.Logger.Warn("Forbidden from getting migration job, retrying in case permissions are not yet propagated")
52+
if retries > 0 {
53+
mgr.Logger.Warn("Failed to get migration job, retrying in case permissions are not yet propagated")
5754
time.Sleep(20 * time.Second)
5855
return getMigrationJobWithRetry(ctx, migrationName, gcpProject, mgr, retries-1)
5956
}
@@ -106,14 +103,14 @@ func waitForReplicationLagToReachZero(ctx context.Context, target *resolved.Inst
106103
req := &monitoringpb.QueryTimeSeriesRequest{
107104
Name: gcpProject.GcpParentURI(),
108105
Query: "fetch cloudsql_database\n" +
109-
"| metric\n" +
110-
" 'cloudsql.googleapis.com/database/postgresql/external_sync/max_replica_byte_lag'\n" +
111-
"| filter\n" +
112-
" resource.region == 'europe-north1' && \n" +
113-
fmt.Sprintf(" resource.project_id == '%s' &&\n", gcpProject.Id) +
114-
fmt.Sprintf(" resource.database_id == '%s:%s'\n", gcpProject.Id, target.Name) +
115-
"| group_by [], mean(val())\n" +
116-
"| within 5m\n",
106+
"| metric\n" +
107+
" 'cloudsql.googleapis.com/database/postgresql/external_sync/max_replica_byte_lag'\n" +
108+
"| filter\n" +
109+
" resource.region == 'europe-north1' && \n" +
110+
fmt.Sprintf(" resource.project_id == '%s' &&\n", gcpProject.Id) +
111+
fmt.Sprintf(" resource.database_id == '%s:%s'\n", gcpProject.Id, target.Name) +
112+
"| group_by [], mean(val())\n" +
113+
"| within 5m\n",
117114
}
118115

119116
for {

0 commit comments

Comments
 (0)