You need to sign in or sign up before continuing.
Commit 82832129 authored by Sushant Mahajan's avatar Sushant Mahajan

fixed too many open files error, by defering rpc connection close on client side

parent 3a1eedef
...@@ -422,25 +422,11 @@ func (rft *Raft) handleAppendReply(temp *AppendReply) { ...@@ -422,25 +422,11 @@ func (rft *Raft) handleAppendReply(temp *AppendReply) {
} }
} }
func doAppendReplyRPC(hostname string, logPort int, temp *AppendReply, Info *log.Logger) {
Info.Println("append reply RPC")
//rpc call to the caller
client, err := rpc.Dial("tcp", hostname+":"+strconv.Itoa(logPort))
if err != nil {
Info.Fatal("Dialing:", err)
}
reply := new(Reply)
args := temp
Info.Println("[F]: Calling AppendReply RPC", logPort)
appendReplyCall := client.Go("RaftRPCService.AppendReplyRPC", args, reply, nil) //let go allocate done channel
appendReplyCall = <-appendReplyCall.Done
Info.Println("Reply", appendReplyCall, reply.X)
}
func doVoteRequestRPC(hostname string, logPort int, temp *VoteRequest, rft *Raft) { func doVoteRequestRPC(hostname string, logPort int, temp *VoteRequest, rft *Raft) {
rft.Info.Println("[C]:Vote request RPC") rft.Info.Println("[C]:Vote request RPC")
//rpc call to the caller //rpc call to the caller
client, err := rpc.Dial("tcp", hostname+":"+strconv.Itoa(logPort)) client, err := rpc.Dial("tcp", hostname+":"+strconv.Itoa(logPort))
defer client.Close()
if err != nil { if err != nil {
rft.Info.Fatal("Dialing:", err) rft.Info.Fatal("Dialing:", err)
} }
...@@ -455,6 +441,7 @@ func doVoteRequestRPC(hostname string, logPort int, temp *VoteRequest, rft *Raft ...@@ -455,6 +441,7 @@ func doVoteRequestRPC(hostname string, logPort int, temp *VoteRequest, rft *Raft
//make append entries rpc call to followers //make append entries rpc call to followers
func doAppendRPCCall(hostname string, logPort int, temp *AppendRPC, rft *Raft) { func doAppendRPCCall(hostname string, logPort int, temp *AppendRPC, rft *Raft) {
client, err := rpc.Dial("tcp", hostname+":"+strconv.Itoa(logPort)) client, err := rpc.Dial("tcp", hostname+":"+strconv.Itoa(logPort))
defer client.Close()
if err != nil { if err != nil {
rft.Info.Fatal("[L]: Dialing:", err) rft.Info.Fatal("[L]: Dialing:", err)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment