Skip to content

Commit

Permalink
bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
ffay committed Nov 16, 2017
1 parent f543655 commit c5346c5
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 30 deletions.
1 change: 0 additions & 1 deletion src/main/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ type MessageHandler interface {
}

type ConnHandler struct {
HbChan chan struct{}
ReadTime int64
WriteTime int64
Active bool
Expand Down
6 changes: 6 additions & 0 deletions src/main/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,11 @@ func (messageHandler *LPMessageHandler) startHeartbeat() {
for {
select {
case <-time.After(time.Second * HEARTBEAT_INTERVAL):
if time.Now().Unix()-messageHandler.connHandler.ReadTime >= 2*HEARTBEAT_INTERVAL {
log.Println("proxy connection timeout:", messageHandler.connHandler)
messageHandler.connHandler.conn.Close()
return
}
msg := Message{Type: TYPE_HEARTBEAT}
messageHandler.connHandler.Write(msg)
case <-messageHandler.die:
Expand Down Expand Up @@ -301,6 +306,7 @@ func (pooler *ProxyConnPooler) Create(pool *ConnHandlerPool) (*ConnHandler, erro
connHandler.conn = conn
connHandler.messageHandler = interface{}(&messageHandler).(MessageHandler)
messageHandler.connHandler = connHandler
messageHandler.startHeartbeat()
go func() {
connHandler.Listen(conn, &messageHandler)
}()
Expand Down
29 changes: 0 additions & 29 deletions src/main/proxy_conn_pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package main
import (
"log"
"sync"
"time"
)

type Pooler interface {
Expand Down Expand Up @@ -50,7 +49,6 @@ func (connPool *ConnHandlerPool) getConn() (*ConnHandler, error) {
return nil, nil
}
conn := connPool.conns[len(connPool.conns)-1]
close(conn.HbChan)
connPool.conns = connPool.conns[:len(connPool.conns)-1]
if connPool.Pooler.IsActive(conn) {
log.Println("get connection from pool: ", conn)
Expand All @@ -70,32 +68,5 @@ func (connPool *ConnHandlerPool) Return(conn *ConnHandler) {
connPool.conns = connPool.conns[:len(connPool.conns)+1]
connPool.conns[len(connPool.conns)-1] = conn
log.Println("return connection:", conn, ", poolsize is ", len(connPool.conns))
connPool.startHeartbeat(conn)
}
}

func (connPool *ConnHandlerPool) startHeartbeat(conn *ConnHandler) {
log.Println("start proxy connection heartbeat:", conn)
if time.Now().Unix()-conn.WriteTime > HEARTBEAT_INTERVAL {
msg := Message{Type: TYPE_HEARTBEAT}
conn.Write(msg)
}
conn.HbChan = make(chan struct{})
go func() {
for {
select {
case <-time.After(time.Second * HEARTBEAT_INTERVAL):
if time.Now().Unix()-conn.ReadTime >= 2*HEARTBEAT_INTERVAL {
log.Println("proxy connection timeout:", conn)
conn.conn.Close()
return
}
msg := Message{Type: TYPE_HEARTBEAT}
conn.Write(msg)
case <-conn.HbChan:
log.Println("stop proxy connection heartbeat:", conn)
return
}
}
}()
}

0 comments on commit c5346c5

Please sign in to comment.