On Wed, Nov 27, 2019 at 5:35 PM Mark Thomas <ma...@apache.org> wrote:

> On 27/11/2019 15:59, Rémy Maucherat wrote:
> > On Wed, Nov 27, 2019 at 4:51 PM Mark Thomas <ma...@apache.org
> > <mailto:ma...@apache.org>> wrote:
> >
> >     I've been looking at the 9.0.x changes.
> >
> >     What is clearer now (I think the differences were always there - just
> >     harder to see with the more complex code) is that there are some
> minor
> >     differences in behaviour when all of the following are true:
> >     - the source buffer is emptied when it is copied to the socket buffer
> >     - the socket buffer is full after the source buffer has been copied
> >
> >     In some cases there will be an immediate write to the network. In
> other
> >     cases the network write will wait until the next write to the socket
> >     buffer or the next explicit flush.
> >
> >     I think I prefer an immediate write in this scenario. WDYT to
> updating
> >     (very carefully) all of the write methods to behave that way?
> >
> >
> > Ah personally I did prefer not writing that full buffer (unless the
> > source still has data, of course) on purpose since I considered not
> > doing IO reduced the likelihood to block on IO (or write 0 for non
> > blocking and having to use the poller). That's possible though if you
> > like it better.
>
> My preference for writing earlier is only a slight one. I'm more
> concerned that different methods take a different approach. Taking a
> closer look at that is on my TODO list but it isn't a priority for me at
> the moment.
>

I'll double check the inconsistency :)

writeBlocking writes after.
writeNonBlockingInternal has that  "&&
!socketBufferHandler.isWriteBufferWritable()" in the while loop that makes
the thing inconsistent, it is a leftover from the old code.
For now I'll fix that.

Rémy

Reply via email to