@@ -228,6 +228,35 @@ func NewCartridgeApplication(runningCtx running.RunningCtx) *CartridgeApplicatio
228
228
return app
229
229
}
230
230
231
+ func hasMissingInstancesAliases (replicasets []Replicaset ) bool {
232
+ for _ , rs := range replicasets {
233
+ for _ , inst := range rs .Instances {
234
+ if len (inst .Alias ) == 0 {
235
+ return true
236
+ }
237
+ }
238
+ }
239
+ return false
240
+ }
241
+
242
+ func updateInstancesAliases (replicasets []Replicaset , other []Replicaset ) {
243
+ instAliases := make (map [string ]string , 0 )
244
+ for _ , rs := range other {
245
+ for _ , inst := range rs .Instances {
246
+ instAliases [inst .UUID ] = inst .Alias
247
+ }
248
+ }
249
+ for i , rs := range replicasets {
250
+ for ii , inst := range rs .Instances {
251
+ if len (inst .Alias ) == 0 {
252
+ if alias , ok := instAliases [inst .UUID ]; ok && len (alias ) > 0 {
253
+ replicasets [i ].Instances [ii ].Alias = alias
254
+ }
255
+ }
256
+ }
257
+ }
258
+ }
259
+
231
260
// discovery returns a replicaset topology for an application with
232
261
// the Cartridge orchestrator.
233
262
func (c * CartridgeApplication ) discovery () (Replicasets , error ) {
@@ -245,14 +274,15 @@ func (c *CartridgeApplication) discovery() (Replicasets, error) {
245
274
}
246
275
if topology .IsBootstrapped {
247
276
if newTopology .IsBootstrapped {
248
- topology = newTopology
277
+ updateInstancesAliases ( topology . Replicasets , newTopology . Replicasets )
249
278
}
250
279
} else {
251
280
topology = newTopology
252
281
}
253
282
254
283
// Stop if we already found a valid topology.
255
- return topology .IsBootstrapped && ! topology .IsCritical , nil
284
+ // return topology.IsBootstrapped && !topology.IsCritical, nil
285
+ return ! hasMissingInstancesAliases (topology .Replicasets ), nil
256
286
},
257
287
))
258
288
if err != nil {
@@ -498,6 +528,10 @@ func (c *CartridgeApplication) bootstrapInstance(instanceName, replicasetName st
498
528
UUID : & replicasetUUID ,
499
529
JoinServers : joinOpts ,
500
530
}}
531
+ fmt .Println ("bootstrapInstance: opts:" )
532
+ for i , opt := range opts {
533
+ fmt .Printf ("[%d]: %+v\n " , i , opt )
534
+ }
501
535
return cartridgeEditReplicasets (evaler , opts , timeout )
502
536
}
503
537
@@ -608,6 +642,7 @@ func updateCartridgeReplicasets(evaler connector.Evaler, discovered Replicasets,
608
642
opts .UUID = & uuid
609
643
}
610
644
var err error
645
+
611
646
opts .JoinServers , err = getCartridgeJoinServersOpts (instancesCfg ,
612
647
rcfg .Instances , instanceUUID )
613
648
if err != nil {
@@ -625,7 +660,47 @@ func updateCartridgeReplicasets(evaler connector.Evaler, discovered Replicasets,
625
660
editOpts = append (editOpts , opts )
626
661
}
627
662
628
- return cartridgeEditReplicasets (evaler , editOpts , timeout )
663
+ // return cartridgeEditReplicasets(evaler, editOpts, timeout)
664
+ err := cartridgeEditReplicasets (evaler , editOpts , timeout )
665
+
666
+ var dump []string = make ([]string , 0 , 40 )
667
+ dump = append (dump , "updateCartridgeReplicasets: replicasetCfg:" )
668
+ for k , v := range replicasetCfg {
669
+ dump = append (dump , fmt .Sprintf (" %s: %+v" , k , v ))
670
+ }
671
+ dump = append (dump , "updateCartridgeReplicasets: instancesCfg:" )
672
+ for k , v := range instancesCfg {
673
+ dump = append (dump , fmt .Sprintf (" %s: %+v" , k , v ))
674
+ }
675
+ dump = append (dump , "updateCartridgeReplicasets: discovered:" )
676
+ dump = append (dump , fmt .Sprintf (" State=%s" , discovered .State ))
677
+ dump = append (dump , fmt .Sprintf (" Orchestrator=%s" , discovered .Orchestrator ))
678
+ for i , rs := range discovered .Replicasets {
679
+ dump = append (dump , fmt .Sprintf (" [%d]: %+v" , i , rs ))
680
+ }
681
+
682
+ dump = append (dump , "updateCartridgeReplicasets: setup UUID maps" )
683
+ for _ , replicaset := range discovered .Replicasets {
684
+ dump = append (dump , fmt .Sprintf (" %s: %s" , replicaset .Alias , replicaset .UUID ))
685
+ for _ , instance := range replicaset .Instances {
686
+ dump = append (dump , fmt .Sprintf (" %s: %s" , instance .Alias , instance .UUID ))
687
+ }
688
+ }
689
+ dump = append (dump , "updateCartridgeReplicasets: replicasetUUID:" )
690
+ for k , v := range replicasetUUID {
691
+ dump = append (dump , fmt .Sprintf (" %s: %s" , k , v ))
692
+ }
693
+ dump = append (dump , "updateCartridgeReplicasets: instanceUUID:" )
694
+ for k , v := range instanceUUID {
695
+ dump = append (dump , fmt .Sprintf (" %s: %s" , k , v ))
696
+ }
697
+ dump = append (dump , "updateCartridgeReplicasets: editOpts:" )
698
+ for i , opt := range editOpts {
699
+ dump = append (dump , fmt .Sprintf ("[%d]: %+v" , i , opt ))
700
+ }
701
+ fmt .Println (strings .Join (dump , "\n " ))
702
+
703
+ return err
629
704
}
630
705
631
706
// Expel expels an instance from a Cartridge replicasets.
0 commit comments