Mercurial > lbo > hg > clusterconsensus
changeset 34:8fa310d9bb1d
Track mastership better, listen on generic port
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Wed, 24 Jul 2019 15:10:36 +0200 |
parents | 7f084f715214 |
children | b0c0254f4368 |
files | example_http/example.go |
diffstat | 1 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/example_http/example.go Fri Oct 14 22:25:56 2016 +0200 +++ b/example_http/example.go Wed Jul 24 15:10:36 2019 +0200 @@ -80,18 +80,26 @@ type EventHandler struct{} +var isMaster bool = false + func (eh EventHandler) OnBecomeMaster(*con.Participant) { fmt.Println("BECAME MASTER") + isMaster = true } func (eh EventHandler) OnLoseMaster(*con.Participant) { fmt.Println("LOST MASTERSHIP") + isMaster = false +} + +func (eh EventHandler) OnCommit(p *con.Participant, s con.SequenceNumber, chg []con.Change) { + fmt.Println("COMMITTED: ", s, chg) } func main() { initMaster := flag.Bool("initMaster", false, "Initialize as master, then add others") participants := flag.String("participants", "", "Comma-separated list of other participants' addresses") - addr := flag.String("listen", "localhost:9000", "Address to listen on") + addr := flag.String("listen", ":9000", "Address to listen on") cluster := flag.String("cluster", "cluster1", "ClusterID") interval := flag.Uint("interval", 2, "interval for submitting random changes") @@ -109,7 +117,7 @@ for _, a := range strings.Split(*participants, ",") { log.Println("Adding", a) - participant.AddParticipant(con.Member{Address: a}) + participant.AddParticipant(con.Member{Address: "http://" + a}) } participant.Submit([]con.Change{}) @@ -119,13 +127,15 @@ for { time.Sleep(time.Duration(*interval) * time.Second) - if err := participant.PingMaster(); err != nil { + if isMaster { + fmt.Println("<MASTER>") + } else if err := participant.PingMaster(); err != nil { fmt.Println("Master down:", err) } else { fmt.Println("Master is up") } - err := participant.SubmitOne(Change{t: change_ADD, key: fmt.Sprintf("k%d", i), val: fmt.Sprintf("val%d", i)}) + err := participant.SubmitOne(Change{t: change_ADD, key: fmt.Sprintf(*addr+"k%d", i), val: fmt.Sprintf("val%d", i)}) if err != nil { fmt.Println(err)