@@ -109,8 +109,11 @@ func init() {
109109// 7. Double check backups all finished
110110// nolint:gocognit
111111func backup () error {
112- var err error
113- var lsBackup * model.LsBackup
112+ var (
113+ err error
114+ lsBackup * model.LsBackup
115+ cancel bool
116+ )
114117 proxy , err := pkg .NewShardingSphereProxy (Username , Password , pkg .DefaultDBName , Host , Port )
115118 if err != nil {
116119 return xerr .NewCliErr (fmt .Sprintf ("Connect shardingsphere proxy failed, err: %s" , err ))
@@ -123,14 +126,20 @@ func backup() error {
123126
124127 defer func () {
125128 if err != nil {
126- logging .Warn ("Try to unlock cluster ..." )
129+ if ! cancel {
130+ logging .Warn ("Try to unlock cluster ..." )
131+ }
127132 if err := proxy .Unlock (); err != nil {
128133 logging .Error (fmt .Sprintf ("Since backup failed, try to unlock cluster, but still failed. err: %s" , err ))
129134 }
130135
131136 if lsBackup != nil {
132- logging .Warn ("Try to delete backup data ..." )
133- deleteBackupFiles (ls , lsBackup )
137+ if cancel {
138+ deleteBackupFiles (ls , lsBackup , deleteModeQuiet )
139+ } else {
140+ logging .Warn ("Try to delete backup data ..." )
141+ deleteBackupFiles (ls , lsBackup , deleteModeNormal )
142+ }
134143 }
135144 }
136145 }()
@@ -168,6 +177,7 @@ func backup() error {
168177 prompt := fmt .Sprintln (backupPromptFmt )
169178 err = promptutil .GetUserApproveInTerminal (prompt )
170179 if err != nil {
180+ cancel = true
171181 return xerr .NewCliErr (fmt .Sprintf ("%s" , err ))
172182 }
173183
@@ -436,7 +446,14 @@ func doCheck(as pkg.IAgentServer, sn *model.StorageNode, backupID string, retrie
436446 return backupInfo .Status , nil
437447}
438448
439- func deleteBackupFiles (ls pkg.ILocalStorage , lsBackup * model.LsBackup ) {
449+ type deleteMode int
450+
451+ const (
452+ deleteModeNormal deleteMode = iota
453+ deleteModeQuiet
454+ )
455+
456+ func deleteBackupFiles (ls pkg.ILocalStorage , lsBackup * model.LsBackup , m deleteMode ) {
440457 var (
441458 dataNodeMap = make (map [string ]* model.DataNode )
442459 totalNum = len (lsBackup .SsBackup .StorageNodes )
@@ -458,44 +475,51 @@ func deleteBackupFiles(ls pkg.ILocalStorage, lsBackup *model.LsBackup) {
458475 sn := sn
459476 dn , ok := dataNodeMap [sn .IP ]
460477 if ! ok {
461- logging .Warn (fmt .Sprintf ("SKIPPED! data node %s:%d not found in backup info." , sn .IP , sn .Port ))
478+ if m != deleteModeQuiet {
479+ logging .Warn (fmt .Sprintf ("SKIPPED! data node %s:%d not found in backup info." , sn .IP , sn .Port ))
480+ }
462481 continue
463482 }
464483 as := pkg .NewAgentServer (fmt .Sprintf ("%s:%d" , convertLocalhost (sn .IP ), AgentPort ))
465484
466485 go doDelete (as , sn , dn , resultCh , pw )
467486 }
468487
469- time .Sleep (time .Millisecond * 100 )
470- for pw .IsRenderInProgress () {
471- if pw .LengthActive () == 0 {
472- pw .Stop ()
473- }
488+ if m != deleteModeQuiet {
489+
474490 time .Sleep (time .Millisecond * 100 )
475- }
491+ for pw .IsRenderInProgress () {
492+ if pw .LengthActive () == 0 {
493+ pw .Stop ()
494+ }
495+ time .Sleep (time .Millisecond * 100 )
496+ }
476497
477- close (resultCh )
498+ close (resultCh )
478499
479- t := table .NewWriter ()
480- t .SetOutputMirror (os .Stdout )
481- t .SetTitle ("Delete Backup Files Result" )
482- t .AppendHeader (table.Row {"#" , "Node IP" , "Node Port" , "Result" , "Message" })
483- t .SetColumnConfigs ([]table.ColumnConfig {{Number : 5 , WidthMax : 50 }})
484-
485- idx := 0
486- for result := range resultCh {
487- idx ++
488- t .AppendRow ([]interface {}{idx , result .IP , result .Port , result .Status , result .Msg })
489- t .AppendSeparator ()
490- }
500+ t := table .NewWriter ()
501+ t .SetOutputMirror (os .Stdout )
502+ t .SetTitle ("Delete Backup Files Result" )
503+ t .AppendHeader (table.Row {"#" , "Node IP" , "Node Port" , "Result" , "Message" })
504+ t .SetColumnConfigs ([]table.ColumnConfig {{Number : 5 , WidthMax : 50 }})
491505
492- t .Render ()
506+ idx := 0
507+ for result := range resultCh {
508+ idx ++
509+ t .AppendRow ([]interface {}{idx , result .IP , result .Port , result .Status , result .Msg })
510+ t .AppendSeparator ()
511+ }
512+
513+ t .Render ()
514+ }
493515
494516 if err := ls .DeleteByName (filename ); err != nil {
495517 logging .Warn ("Delete backup info file failed" )
496518 }
497519
498- logging .Info ("Delete backup files finished" )
520+ if m != deleteModeQuiet {
521+ logging .Info ("Delete backup files finished" )
522+ }
499523}
500524
501525func doDelete (as pkg.IAgentServer , sn * model.StorageNode , dn * model.DataNode , resultCh chan * model.DeleteBackupResult , pw progress.Writer ) {
0 commit comments