Hi Dave,

I agree with you

thanks
Santhosh

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

> In this case it looks like to be correct you must set the deadline
> before reading from the network, and given reading from the network
> can block, the cost of setting the deadline is small.
>
> On Sat, 6 Apr 2019 at 21:47, Santhosh T <santhosh.tek...@gmail.com> wrote:
> >
> > 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