@@ -77,12 +77,12 @@ type SwitchableInstance interface {
7777}
7878
7979// SwitchSingleInstance executes the standardized switching procedure for a single database instance.
80- func SwitchSingleInstance (ins SwitchableInstance ) (retErr error ) {
80+ func SwitchSingleInstance (ins SwitchableInstance ) (switchSuccess bool , retErr error ) {
8181 ins .ReportLogf (SwitchInfo , "start to switch single instance: %s" , ins .GetInstanceInfo ())
8282
8383 // rollback when error occurs
8484 defer func () {
85- if retErr == nil {
85+ if switchSuccess {
8686 ins .ReportLogf (SwitchSuccess , "successfully switch single instance: %s" , ins .GetInstanceInfo ())
8787 return
8888 }
@@ -98,14 +98,14 @@ func SwitchSingleInstance(ins SwitchableInstance) (retErr error) {
9898 if (ins .GetStatus () != dbm .Running ) && (ins .GetStatus () != dbm .Available ) {
9999 retErr = gerrors .Newf (gerrors .Failure , "pre-status check unpass for wrong status:%s" , ins .GetStatus ())
100100 ins .ReportLogf (SwitchFail , "%s" , retErr .Error ())
101- return
101+ return false , retErr
102102 }
103103 ins .ReportLogf (SwitchInfo , "pre-status check pass with status:%s" , ins .GetStatus ())
104104
105105 if err := ins .SetInstanceUnavailable (); err != nil {
106106 retErr = gerrors .Newf (gerrors .Failure , "failed to set instance unavailable: %s" , err .Error ())
107107 ins .ReportLogf (SwitchFail , "%s" , retErr .Error ())
108- return
108+ return false , retErr
109109 }
110110 ins .ReportLogf (SwitchInfo , "successfully set instance unavailable" )
111111
@@ -115,36 +115,38 @@ func SwitchSingleInstance(ins SwitchableInstance) (retErr error) {
115115 ins .ReportLogf (SwitchInfo , "check result before switch: switch required" )
116116 case SwitchNotNeeded :
117117 ins .ReportLogf (SwitchInfo , "check result before switch: no need to switch" )
118- return
118+ return true , nil
119119 default :
120120 errMsg := "check result before switch: check unpass"
121121 if checkErr != nil {
122122 errMsg += fmt .Sprintf (", errmsg: %s" , checkErr .Error ())
123123 }
124+
125+ retErr = gerrors .Newf (gerrors .Failure , "%s" , errMsg )
124126 ins .ReportLogf (SwitchFail , "%s" , errMsg )
125- return
127+ return false , retErr
126128 }
127129
128130 if err := ins .DoSwitch (); err != nil {
129131 retErr = gerrors .Newf (gerrors .Failure , "failed to do switch: %s" , err .Error ())
130132 ins .ReportLogf (SwitchFail , "%s" , retErr .Error ())
131- return
133+ return false , retErr
132134 }
133135 ins .ReportLogf (SwitchInfo , "successfully do switch" )
134136
135137 if err := ins .UpdateMetaInfo (); err != nil {
136138 retErr = gerrors .Newf (gerrors .Failure , "failed to update meta info: %s" , err .Error ())
137139 ins .ReportLogf (SwitchFail , "%s" , retErr .Error ())
138- return
140+ return false , retErr
139141 }
140142 ins .ReportLogf (SwitchInfo , "successfully update meta info" )
141143
142144 if err := ins .DoFinal (); err != nil {
143145 retErr = gerrors .Newf (gerrors .Failure , "failed to do final step: %s" , err .Error ())
144146 ins .ReportLogf (SwitchFail , "%s" , retErr .Error ())
145- return
147+ return false , retErr
146148 }
147149 ins .ReportLogf (SwitchInfo , "successfully do final step" )
148150
149- return
151+ return true , nil
150152}
0 commit comments