aboutsummaryrefslogtreecommitdiffstats
path: root/simulation/peer-server.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2018-08-06 11:14:02 +0800
committerGitHub <noreply@github.com>2018-08-06 11:14:02 +0800
commitbb95322f46524ea52b6762c349905dcc910814c8 (patch)
treecf53a3b40e5eaba66eb8d837215650fab9b6150c /simulation/peer-server.go
parent4b606c3c12db824cb996d9eca43c1b66b2bdb440 (diff)
downloaddexon-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.go23
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))