Hi Dave,

my mistake, bufr is backed by net.Conn

bufr := bufio.newReader(netConn)
for numEntries >0 {
    numEntries--
    netConn.setReadDeadline(timeNow().add(heartbeatTimeout)
    entry.decode(bufr)
    process(entry)
}

thanks
Santhosh

On Sat, Apr 6, 2019 at 4:09 PM Dave Cheney <d...@cheney.net> wrote:

> Thanks for the explanation. Two things
>
> 1. As this is a question about how to write a Go program, you should
> move this thread to golang-nuts, golang-dev is only for the
> development of Go.
> 2. From the sample code you provided, there is no call to
> netConn.Read, so setting the deadline is unnecessary. Please move the
> discussion to golang-nuts and consider posting a larger piece of
> sample code that shows the interaction with the network.
>
> On Sat, 6 Apr 2019 at 21:27, Santhosh T <santhosh.tek...@gmail.com> wrote:
> >
> > Hi Dave,
> >
> > I am implementing raft protocol, where leader sends bunch of entries
> over net.Conn to follower.
> >
> > leader can send large number of entries in single net.Conn.write.
> > if follower does not hear from leader within configured
> heartbeatTimeout, it has to start election.
> >
> > currently follower implementation is something like this:
> >
> > for numEntries >0 {
> >     numEntries--
> >     netConn.setReadDeadline(timeNow().add(heartbeatTimeout)
> >     entry.decode(bufr)
> >     process(entry)
> > }
> >
> > if numEntries is say 10000, i would be spending significant time in
> makeing syscalls for setReaddeadline
> > btw, i have not done any benchmark yet. I asked the question our of
> curiosity.
> >
> > What i was planning to do to optimize it is:
> >      as i am reading entry from bufr, in most cases the entry might be
> already in the buffer. in such case
> > i can avoid setting readDeadline. so set deadline, only when bufr calls
> read on underlaying reader.
> >
> > hope i am clear...
> >
> > thanks
> > Santhosh
> >
> > On Sat, Apr 6, 2019 at 2:53 PM Dave Cheney <d...@cheney.net> wrote:
> >>
> >> Hi Santhosh,
> >>
> >> Calling SetDeadline does not _directly_ trigger a syscall, but it does
> >> have several other observable side effects. What is the problem you
> >> are facing that lead you to ask this question?
> >>
> >> Thanks
> >>
> >> Dave
> >>
> >> On Sat, 6 Apr 2019 at 20:20, Santhosh Kumar T <
> santhosh.tek...@gmail.com> wrote:
> >> >
> >> > does net.Conn.SetDeadLine makes syscall ?
> >> >
> >> > thanks
> >> > santhosh
> >> >
> >> > --
> >> > You received this message because you are subscribed to the Google
> Groups "golang-dev" group.
> >> > To unsubscribe from this group and stop receiving emails from it,
> send an email to golang-dev+unsubscr...@googlegroups.com.
> >> > For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to