Skip to content

Commit cd4ed79

Browse files
Merge pull request #1257 from planetscale/update-move-table-cancel-to-async
Update move table cancel to use async operation
2 parents 09fcf54 + a53cbea commit cd4ed79

5 files changed

Lines changed: 61 additions & 6 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ require (
2525
github.com/mattn/go-shellwords v1.0.12
2626
github.com/mitchellh/go-homedir v1.1.0
2727
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
28-
github.com/planetscale/planetscale-go v0.163.0
28+
github.com/planetscale/planetscale-go v0.164.0
2929
github.com/planetscale/psdb v0.0.0-20250717190954-65c6661ab6e4
3030
github.com/planetscale/psdbproxy v0.0.0-20250728082226-3f4ea3a74ec7
3131
github.com/spf13/cobra v1.10.2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjL
176176
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
177177
github.com/planetscale/noglog v0.2.1-0.20210421230640-bea75fcd2e8e h1:MZ8D+Z3m2vvqGZLvoQfpaGg/j1fNDr4j03s3PRz4rVY=
178178
github.com/planetscale/noglog v0.2.1-0.20210421230640-bea75fcd2e8e/go.mod h1:hwAsSPQdvPa3WcfKfzTXxtEq/HlqwLjQasfO6QbGo4Q=
179-
github.com/planetscale/planetscale-go v0.163.0 h1:LsMWsnrDUncbstRBMdYLCTyu5nQzNyQc60ytXaHuezQ=
180-
github.com/planetscale/planetscale-go v0.163.0/go.mod h1:paQCI5SgquuoewvMQM7R+r1XJO868bdP6/ihGidYRM0=
179+
github.com/planetscale/planetscale-go v0.164.0 h1:k/Jw1robfLhcGS3f4FtqxQXEDuuddj0bnTE/jbAo4/o=
180+
github.com/planetscale/planetscale-go v0.164.0/go.mod h1:paQCI5SgquuoewvMQM7R+r1XJO868bdP6/ihGidYRM0=
181181
github.com/planetscale/psdb v0.0.0-20250717190954-65c6661ab6e4 h1:Xv5pj20Rhfty1Tv0OVcidg4ez4PvGrpKvb6rvUwQgDs=
182182
github.com/planetscale/psdb v0.0.0-20250717190954-65c6661ab6e4/go.mod h1:M52h5IWxAcbdQ1hSZrLAGQC4ZXslxEsK/Wh9nu3wdWs=
183183
github.com/planetscale/psdbproxy v0.0.0-20250728082226-3f4ea3a74ec7 h1:aRd6vdE1fyuSI4RVj7oCr8lFmgqXvpnPUmN85VbZCp8=

internal/cmd/branch/vtctld/move_tables.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,12 @@ func MoveTablesCancelCmd(ch *cmdutil.Helper) *cobra.Command {
429429
req.KeepRoutingRules = &flags.keepRoutingRules
430430
}
431431

432-
data, err := client.MoveTables.Cancel(ctx, req)
432+
operation, err := client.MoveTables.Cancel(ctx, req)
433+
if err != nil {
434+
return cmdutil.HandleError(err)
435+
}
436+
437+
data, err := waitForMoveTablesOperationResult(ctx, client, ch.Config.Organization, database, branch, operation.ID)
433438
if err != nil {
434439
return cmdutil.HandleError(err)
435440
}

internal/cmd/branch/vtctld/move_tables_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,56 @@ func TestMoveTablesSwitchTrafficOperationTimeout(t *testing.T) {
497497
c.Assert(buf.String(), qt.Equals, "")
498498
}
499499

500+
func TestMoveTablesCancelWithFlags(t *testing.T) {
501+
c := qt.New(t)
502+
setMoveTablesPollInterval(t, 0)
503+
504+
org := "my-org"
505+
db := "my-db"
506+
branch := "my-branch"
507+
508+
keepData := false
509+
svc := &mock.MoveTablesService{
510+
CancelFn: func(ctx context.Context, req *ps.MoveTablesCancelRequest) (*ps.VtctldOperationReference, error) {
511+
c.Assert(req.Workflow, qt.Equals, "my-workflow")
512+
c.Assert(req.TargetKeyspace, qt.Equals, "target-ks")
513+
c.Assert(req.KeepData, qt.IsNotNil)
514+
c.Assert(*req.KeepData, qt.Equals, keepData)
515+
return &ps.VtctldOperationReference{ID: "cancel-op"}, nil
516+
},
517+
}
518+
vtctldSvc := &mock.VtctldService{
519+
GetOperationFn: func(ctx context.Context, req *ps.GetVtctldOperationRequest) (*ps.VtctldOperation, error) {
520+
c.Assert(req.Organization, qt.Equals, org)
521+
c.Assert(req.Database, qt.Equals, db)
522+
c.Assert(req.Branch, qt.Equals, branch)
523+
c.Assert(req.ID, qt.Equals, "cancel-op")
524+
525+
return &ps.VtctldOperation{
526+
ID: "cancel-op",
527+
State: "completed",
528+
Completed: true,
529+
Result: json.RawMessage(`{"summary":"cancelled"}`),
530+
}, nil
531+
},
532+
}
533+
534+
var buf bytes.Buffer
535+
ch := moveTablesTestHelper(org, svc, vtctldSvc, &buf)
536+
537+
cmd := MoveTablesCmd(ch)
538+
cmd.SetArgs([]string{"cancel", db, branch,
539+
"--workflow", "my-workflow",
540+
"--target-keyspace", "target-ks",
541+
"--keep-data=false",
542+
})
543+
err := cmd.Execute()
544+
c.Assert(err, qt.IsNil)
545+
c.Assert(svc.CancelFnInvoked, qt.IsTrue)
546+
c.Assert(vtctldSvc.GetOperationFnInvoked, qt.IsTrue)
547+
c.Assert(buf.String(), qt.JSONEquals, map[string]string{"summary": "cancelled"})
548+
}
549+
500550
func TestMoveTablesShow(t *testing.T) {
501551
c := qt.New(t)
502552

internal/mock/vtctld_move_tables.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type MoveTablesService struct {
2323
ReverseTrafficFn func(context.Context, *ps.MoveTablesReverseTrafficRequest) (*ps.VtctldOperationReference, error)
2424
ReverseTrafficFnInvoked bool
2525

26-
CancelFn func(context.Context, *ps.MoveTablesCancelRequest) (json.RawMessage, error)
26+
CancelFn func(context.Context, *ps.MoveTablesCancelRequest) (*ps.VtctldOperationReference, error)
2727
CancelFnInvoked bool
2828

2929
CompleteFn func(context.Context, *ps.MoveTablesCompleteRequest) (*ps.VtctldOperationReference, error)
@@ -55,7 +55,7 @@ func (s *MoveTablesService) ReverseTraffic(ctx context.Context, req *ps.MoveTabl
5555
return s.ReverseTrafficFn(ctx, req)
5656
}
5757

58-
func (s *MoveTablesService) Cancel(ctx context.Context, req *ps.MoveTablesCancelRequest) (json.RawMessage, error) {
58+
func (s *MoveTablesService) Cancel(ctx context.Context, req *ps.MoveTablesCancelRequest) (*ps.VtctldOperationReference, error) {
5959
s.CancelFnInvoked = true
6060
return s.CancelFn(ctx, req)
6161
}

0 commit comments

Comments
 (0)