diff options
author | Wei-Ning Huang <w@dexon.org> | 2018-08-06 11:14:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-06 11:14:02 +0800 |
commit | bb95322f46524ea52b6762c349905dcc910814c8 (patch) | |
tree | cf53a3b40e5eaba66eb8d837215650fab9b6150c /simulation/peer-server.go | |
parent | 4b606c3c12db824cb996d9eca43c1b66b2bdb440 (diff) | |
download | dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.tar dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.tar.gz dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.tar.bz2 dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.tar.lz dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.tar.xz dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.tar.zst dexon-consensus-bb95322f46524ea52b6762c349905dcc910814c8.zip |
simulation: free resource after use and misc fix for k8s mode (#31)
Diffstat (limited to 'simulation/peer-server.go')
-rw-r--r-- | simulation/peer-server.go | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/simulation/peer-server.go b/simulation/peer-server.go index 4142158..8f2d6ba 100644 --- a/simulation/peer-server.go +++ b/simulation/peer-server.go @@ -65,6 +65,8 @@ func (p *PeerServer) Run(configPath string) { } joinHandler := func(w http.ResponseWriter, r *http.Request) { + defer r.Body.Close() + idString := r.Header.Get("ID") portString := r.Header.Get("PORT") @@ -78,11 +80,16 @@ func (p *PeerServer) Run(configPath string) { p.peers[id] = net.JoinHostPort(host, portString) p.peerTotalOrder[id] = NewTotalOrderResult(id) log.Printf("Peer %s joined from %s", id, p.peers[id]) + + if len(p.peers) == cfg.Validator.Num { + log.Println("All peers connected.") + } } peersHandler := func(w http.ResponseWriter, r *http.Request) { p.peersMu.Lock() defer p.peersMu.Unlock() + defer r.Body.Close() if len(p.peers) != cfg.Validator.Num { w.WriteHeader(http.StatusNotFound) @@ -102,15 +109,20 @@ func (p *PeerServer) Run(configPath string) { infoHandler := func(w http.ResponseWriter, r *http.Request) { p.peersMu.Lock() defer p.peersMu.Unlock() + defer r.Body.Close() msg := InfoMessage{ - Status: normal, + Status: statusNormal, Peers: p.peers, } + if len(p.peers) < cfg.Validator.Num { + msg.Status = statusInit + } + // Determine msg.status. if p.verifiedLen >= cfg.Validator.MaxBlock { - msg.Status = shutdown + msg.Status = statusShutdown } jsonText, err := json.Marshal(msg) @@ -124,6 +136,8 @@ func (p *PeerServer) Run(configPath string) { } deliveryHandler := func(w http.ResponseWriter, r *http.Request) { + defer r.Body.Close() + idString := r.Header.Get("ID") defer r.Body.Close() @@ -159,6 +173,7 @@ func (p *PeerServer) Run(configPath string) { go func(id types.ValidatorID) { p.peerTotalOrderMu.Lock() defer p.peerTotalOrderMu.Unlock() + var correct bool var length int p.peerTotalOrder, correct, length = VerifyTotalOrder(id, p.peerTotalOrder) @@ -172,6 +187,10 @@ func (p *PeerServer) Run(configPath string) { stopServer := make(chan struct{}) messageHandler := func(w http.ResponseWriter, r *http.Request) { + p.peersMu.Lock() + defer p.peersMu.Unlock() + defer r.Body.Close() + idString := r.Header.Get("ID") id := types.ValidatorID{} id.UnmarshalText([]byte(idString)) |