improved logging for IPC connection lifetime management

This commit is contained in:
Bas van Kervel 2015-06-25 15:54:16 +02:00
parent 5757a0edb5
commit 662285074e
4 changed files with 23 additions and 12 deletions

View File

@ -43,7 +43,7 @@ type EthereumClient interface {
SupportedModules() (map[string]string, error)
}
func handle(conn net.Conn, api shared.EthereumApi, c codec.Codec) {
func handle(id int, conn net.Conn, api shared.EthereumApi, c codec.Codec) {
codec := c.New(conn)
for {
@ -52,8 +52,8 @@ func handle(conn net.Conn, api shared.EthereumApi, c codec.Codec) {
codec.Close()
return
} else if err != nil {
glog.V(logger.Error).Infof("comms recv err - %v\n", err)
codec.Close()
glog.V(logger.Debug).Infof("Closed IPC Conn %06d recv err - %v\n", id, err)
return
}
@ -71,8 +71,8 @@ func handle(conn net.Conn, api shared.EthereumApi, c codec.Codec) {
err = codec.WriteResponse(responses[:responseCount])
if err != nil {
glog.V(logger.Error).Infof("comms send err - %v\n", err)
codec.Close()
glog.V(logger.Debug).Infof("Closed IPC Conn %06d send err - %v\n", id, err)
return
}
} else {
@ -82,8 +82,8 @@ func handle(conn net.Conn, api shared.EthereumApi, c codec.Codec) {
rpcResponse = shared.NewRpcResponse(requests[0].Id, requests[0].Jsonrpc, res, err)
err = codec.WriteResponse(rpcResponse)
if err != nil {
glog.V(logger.Error).Infof("comms send err - %v\n", err)
codec.Close()
glog.V(logger.Debug).Infof("Closed IPC Conn %06d send err - %v\n", id, err)
return
}
}

View File

@ -2,6 +2,7 @@ package comms
import (
"fmt"
"math/rand"
"net"
"encoding/json"
@ -95,3 +96,7 @@ func NewIpcClient(cfg IpcConfig, codec codec.Codec) (*ipcClient, error) {
func StartIpc(cfg IpcConfig, codec codec.Codec, offeredApi shared.EthereumApi) error {
return startIpc(cfg, codec, offeredApi)
}
func newIpcConnId() int {
return rand.Int() % 1000000
}

View File

@ -48,7 +48,10 @@ func startIpc(cfg IpcConfig, codec codec.Codec, api shared.EthereumApi) error {
continue
}
go handle(conn, api, codec)
id := newIpcConnId()
glog.V(logger.Debug).Infof("New IPC connection with id %06d started\n", id)
go handle(id, conn, api, codec)
}
os.Remove(cfg.Endpoint)

View File

@ -667,13 +667,16 @@ func startIpc(cfg IpcConfig, codec codec.Codec, api shared.EthereumApi) error {
glog.V(logger.Error).Infof("Error accepting ipc connection - %v\n", err)
continue
}
go handle(conn, api, codec)
}
os.Remove(cfg.Endpoint)
}()
id := newIpcConnId()
glog.V(logger.Debug).Infof("New IPC connection with id %06d started\n", id)
go handle(id, conn, api, codec)
}
os.Remove(cfg.Endpoint)
}()
glog.V(logger.Info).Infof("IPC service started (%s)\n", cfg.Endpoint)
return nil