func main() { flag.Parse() runtime.GOMAXPROCS(*procs) if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) interrupt := make(chan os.Signal, 1) signal.Notify(interrupt) go catchKill(interrupt) } log.Printf("Server starting on port %d\n", *portnum) replicaId, nodeList := registerWithMaster(fmt.Sprintf("%s:%d", *masterAddr, *masterPort)) if *doEpaxos { log.Println("Starting Egalitarian Paxos replica...") rep := epaxos.NewReplica(replicaId, nodeList, *thrifty, *exec, *dreply, *beacon, *durable) rpc.Register(rep) } else if *doMencius { log.Println("Starting Mencius replica...") rep := mencius.NewReplica(replicaId, nodeList, *thrifty, *exec, *dreply, *durable) rpc.Register(rep) } else if *doGpaxos { log.Println("Starting Generalized Paxos replica...") rep := gpaxos.NewReplica(replicaId, nodeList, *thrifty, *exec, *dreply) rpc.Register(rep) } else { log.Println("Starting classic Paxos replica...") rep := paxos.NewReplica(replicaId, nodeList, *thrifty, *exec, *dreply, *durable) rpc.Register(rep) } rpc.HandleHTTP() //listen for RPC on a different port (8070 by default) l, err := net.Listen("tcp", fmt.Sprintf(":%d", *portnum+1000)) if err != nil { log.Fatal("listen error:", err) } http.Serve(l, nil) }
func main() { flag.Parse() runtime.GOMAXPROCS(*procs) if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) interrupt := make(chan os.Signal, 1) signal.Notify(interrupt) go catchKill(interrupt) } log.Printf("Server starting on port %d\n", *portnum) replicaId, nodeList, leaseNodeList := registerWithMaster(fmt.Sprintf("%s:%d", *masterAddr, *masterPort)) log.Println("Lease nodes:") log.Println(leaseNodeList) log.Println(nodeList) log.Println(replicaId) // we first start a Lease-Paxos replica -- we use Lease-Paxos to maintain consensus on lease info log.Println("Starting Lease-Paxos replica...") leaseRep := lpaxos.NewReplica(replicaId, leaseNodeList, *thrifty, *exec, *dreply, *durable) log.Println("Starting classic Paxos replica...") rep := paxos.NewReplica(replicaId, nodeList, *thrifty, *exec, *dreply, *durable, *beacon, leaseRep, *directAcks) rpc.Register(rep) rpc.HandleHTTP() //listen for RPC on a different port (8070 by default) l, err := net.Listen("tcp", fmt.Sprintf(":%d", *portnum+1000)) if err != nil { log.Fatal("listen error:", err) } http.Serve(l, nil) }