@@ -126,7 +126,7 @@ func (cluster *Cluster) MasterFailover(fail bool) bool {
126
126
if cluster .Conf .MultiMaster == false {
127
127
cluster .slaves [key ].delete (& cluster .slaves )
128
128
}
129
- cluster .failoverPreScript ()
129
+ cluster .failoverPreScript (fail )
130
130
131
131
// Phase 2: Reject updates and sync slaves on switchover
132
132
if fail == false {
@@ -249,7 +249,7 @@ func (cluster *Cluster) MasterFailover(fail bool) bool {
249
249
cluster .LogPrintf (LvlInfo , "Failover proxies" )
250
250
cluster .failoverProxies ()
251
251
cluster .failoverProxiesWaitMonitor ()
252
- cluster .failoverPostScript ()
252
+ cluster .failoverPostScript (fail )
253
253
cluster .failoverEnableEventScheduler ()
254
254
// Insert a bogus transaction in order to have a new GTID pos on master
255
255
cluster .LogPrintf (LvlInfo , "Inject fake transaction on new master %s " , cluster .master .URL )
@@ -540,26 +540,37 @@ func (cluster *Cluster) MasterFailover(fail bool) bool {
540
540
return true
541
541
}
542
542
543
- func (cluster * Cluster ) failoverPostScript () {
543
+ func (cluster * Cluster ) failoverPostScript (fail bool ) {
544
544
if cluster .Conf .PostScript != "" {
545
+
545
546
var out []byte
546
547
var err error
548
+
547
549
cluster .LogPrintf (LvlInfo , "Calling post-failover script" )
548
- out , err = exec .Command (cluster .Conf .PostScript , cluster .oldMaster .Host , cluster .GetMaster ().Host , cluster .oldMaster .Port , cluster .GetMaster ().Port , cluster .oldMaster .MxsServerName , cluster .GetMaster ().MxsServerName ).CombinedOutput ()
550
+ failtype := "failover"
551
+ if ! fail {
552
+ failtype = "switchover"
553
+ }
554
+ out , err = exec .Command (cluster .Conf .PostScript , cluster .oldMaster .Host , cluster .GetMaster ().Host , cluster .oldMaster .Port , cluster .GetMaster ().Port , cluster .oldMaster .MxsServerName , cluster .GetMaster ().MxsServerName , failtype ).CombinedOutput ()
549
555
if err != nil {
550
556
cluster .LogPrintf (LvlErr , "%s" , err )
551
557
}
552
558
cluster .LogPrintf (LvlInfo , "Post-failover script complete %s" , string (out ))
553
559
}
554
560
}
555
561
556
- func (cluster * Cluster ) failoverPreScript () {
562
+ func (cluster * Cluster ) failoverPreScript (fail bool ) {
557
563
// Call pre-failover script
558
564
if cluster .Conf .PreScript != "" {
565
+ failtype := "failover"
566
+ if ! fail {
567
+ failtype = "switchover"
568
+ }
569
+
559
570
cluster .LogPrintf (LvlInfo , "Calling pre-failover script" )
560
571
var out []byte
561
572
var err error
562
- out , err = exec .Command (cluster .Conf .PreScript , cluster .oldMaster .Host , cluster .GetMaster ().Host , cluster .oldMaster .Port , cluster .GetMaster ().Port , cluster .oldMaster .MxsServerName , cluster .GetMaster ().MxsServerName ).CombinedOutput ()
573
+ out , err = exec .Command (cluster .Conf .PreScript , cluster .oldMaster .Host , cluster .GetMaster ().Host , cluster .oldMaster .Port , cluster .GetMaster ().Port , cluster .oldMaster .MxsServerName , cluster .GetMaster ().MxsServerName , failtype ).CombinedOutput ()
563
574
if err != nil {
564
575
cluster .LogPrintf (LvlErr , "%s" , err )
565
576
}
@@ -1164,7 +1175,7 @@ func (cluster *Cluster) VMasterFailover(fail bool) bool {
1164
1175
}
1165
1176
cluster .vmaster = cluster .Servers [skey ]
1166
1177
cluster .master = cluster .Servers [skey ]
1167
- cluster .failoverPreScript ()
1178
+ cluster .failoverPreScript (fail )
1168
1179
1169
1180
// Phase 2: Reject updates and sync slaves on switchover
1170
1181
if fail == false {
@@ -1232,7 +1243,7 @@ func (cluster *Cluster) VMasterFailover(fail bool) bool {
1232
1243
cluster .failoverProxies ()
1233
1244
cluster .failoverProxiesWaitMonitor ()
1234
1245
cluster .failoverEnableEventScheduler ()
1235
- cluster .failoverPostScript ()
1246
+ cluster .failoverPostScript (fail )
1236
1247
if cluster .Conf .FailEventStatus {
1237
1248
for _ , v := range cluster .master .EventStatus {
1238
1249
if v .Status == 3 {
0 commit comments