@@ -236,13 +236,17 @@ func (c *CartridgeApplication) discovery() (Replicasets, error) {
236
236
Orchestrator : OrchestratorCartridge ,
237
237
}
238
238
239
+ newTopologies := make (map [string ]cartridgeTopology , len (c .runningCtx .Instances ))
240
+ evaledInstances := make ([]string , 0 , len (c .runningCtx .Instances ))
239
241
var topology cartridgeTopology
240
242
err := EvalForeachAlive (c .runningCtx .Instances , InstanceEvalFunc (
241
243
func (inst running.InstanceCtx , evaler connector.Evaler ) (bool , error ) {
242
244
newTopology , err := getCartridgeTopology (evaler )
243
245
if err != nil {
244
246
return true , err
245
247
}
248
+ evaledInstances = append (evaledInstances , inst .InstName )
249
+ newTopologies [inst .InstName ] = newTopology
246
250
if topology .IsBootstrapped {
247
251
if newTopology .IsBootstrapped {
248
252
topology = newTopology
@@ -252,13 +256,38 @@ func (c *CartridgeApplication) discovery() (Replicasets, error) {
252
256
}
253
257
254
258
// Stop if we already found a valid topology.
255
- return topology .IsBootstrapped && ! topology .IsCritical , nil
259
+ // return topology.IsBootstrapped && !topology.IsCritical, nil
260
+ return false , nil
256
261
},
257
262
))
258
263
if err != nil {
259
264
return replicasets , fmt .Errorf ("failed to get topology: %w" , err )
260
265
}
261
266
267
+ for _ , instName := range evaledInstances {
268
+ newTopology := newTopologies [instName ]
269
+ if topology .IsBootstrapped {
270
+ if newTopology .IsBootstrapped {
271
+ topology = newTopology
272
+ }
273
+ } else {
274
+ topology = newTopology
275
+ }
276
+ }
277
+
278
+ for _ , instName := range evaledInstances {
279
+ t := newTopologies [instName ]
280
+ fmt .Printf ("CartridgeApplication.discovery: %s: topology:\n " , instName )
281
+ fmt .Printf (" IsBootstrapped=%v\n " , t .IsBootstrapped )
282
+ fmt .Printf (" IsCritical=%v\n " , t .IsCritical )
283
+ for i , rs := range t .Replicasets {
284
+ fmt .Printf (" [%d]: Alias=%s UUID=%s LeaderUUID=%s\n " , i , rs .Alias , rs .UUID , rs .LeaderUUID )
285
+ for ii , inst := range rs .Instances {
286
+ fmt .Printf (" [%d]: Alias=%s UUID=%s URI=%s\n " , ii , inst .Alias , inst .UUID , inst .URI )
287
+ }
288
+ }
289
+ }
290
+
262
291
replicasets = getCartridgeReplicasets (topology )
263
292
err = EvalForeachAlive (c .runningCtx .Instances , InstanceEvalFunc (
264
293
func (ictx running.InstanceCtx , evaler connector.Evaler ) (bool , error ) {
@@ -498,6 +527,10 @@ func (c *CartridgeApplication) bootstrapInstance(instanceName, replicasetName st
498
527
UUID : & replicasetUUID ,
499
528
JoinServers : joinOpts ,
500
529
}}
530
+ fmt .Println ("bootstrapInstance: opts:" )
531
+ for i , opt := range opts {
532
+ fmt .Printf ("[%d]: %+v\n " , i , opt )
533
+ }
501
534
return cartridgeEditReplicasets (evaler , opts , timeout )
502
535
}
503
536
@@ -608,6 +641,7 @@ func updateCartridgeReplicasets(evaler connector.Evaler, discovered Replicasets,
608
641
opts .UUID = & uuid
609
642
}
610
643
var err error
644
+
611
645
opts .JoinServers , err = getCartridgeJoinServersOpts (instancesCfg ,
612
646
rcfg .Instances , instanceUUID )
613
647
if err != nil {
@@ -625,7 +659,47 @@ func updateCartridgeReplicasets(evaler connector.Evaler, discovered Replicasets,
625
659
editOpts = append (editOpts , opts )
626
660
}
627
661
628
- return cartridgeEditReplicasets (evaler , editOpts , timeout )
662
+ // return cartridgeEditReplicasets(evaler, editOpts, timeout)
663
+ err := cartridgeEditReplicasets (evaler , editOpts , timeout )
664
+
665
+ var dump []string = make ([]string , 0 , 40 )
666
+ dump = append (dump , "updateCartridgeReplicasets: replicasetCfg:" )
667
+ for k , v := range replicasetCfg {
668
+ dump = append (dump , fmt .Sprintf (" %s: %+v" , k , v ))
669
+ }
670
+ dump = append (dump , "updateCartridgeReplicasets: instancesCfg:" )
671
+ for k , v := range instancesCfg {
672
+ dump = append (dump , fmt .Sprintf (" %s: %+v" , k , v ))
673
+ }
674
+ dump = append (dump , "updateCartridgeReplicasets: discovered:" )
675
+ dump = append (dump , fmt .Sprintf (" State=%s" , discovered .State ))
676
+ dump = append (dump , fmt .Sprintf (" Orchestrator=%s" , discovered .Orchestrator ))
677
+ for i , rs := range discovered .Replicasets {
678
+ dump = append (dump , fmt .Sprintf (" [%d]: %+v" , i , rs ))
679
+ }
680
+
681
+ dump = append (dump , "updateCartridgeReplicasets: setup UUID maps" )
682
+ for _ , replicaset := range discovered .Replicasets {
683
+ dump = append (dump , fmt .Sprintf (" %s: %s" , replicaset .Alias , replicaset .UUID ))
684
+ for _ , instance := range replicaset .Instances {
685
+ dump = append (dump , fmt .Sprintf (" %s: %s" , instance .Alias , instance .UUID ))
686
+ }
687
+ }
688
+ dump = append (dump , "updateCartridgeReplicasets: replicasetUUID:" )
689
+ for k , v := range replicasetUUID {
690
+ dump = append (dump , fmt .Sprintf (" %s: %s" , k , v ))
691
+ }
692
+ dump = append (dump , "updateCartridgeReplicasets: instanceUUID:" )
693
+ for k , v := range instanceUUID {
694
+ dump = append (dump , fmt .Sprintf (" %s: %s" , k , v ))
695
+ }
696
+ dump = append (dump , "updateCartridgeReplicasets: editOpts:" )
697
+ for i , opt := range editOpts {
698
+ dump = append (dump , fmt .Sprintf ("[%d]: %+v" , i , opt ))
699
+ }
700
+ fmt .Println (strings .Join (dump , "\n " ))
701
+
702
+ return err
629
703
}
630
704
631
705
// Expel expels an instance from a Cartridge replicasets.
0 commit comments