Hi,

On Tue, Oct 4, 2022 at 12:29 AM Tomas Fernandez Lobbe <tflo...@gmail.com> wrote:
> El lun, 3 oct 2022 a la(s) 14:52, Simone Bordet (sbor...@webtide.com) 
> escribió:
>> When thread T1 sends a request, it acquires connection C1 and sends
>> the request bytes.
>> In order for T1 to come back and find another request queued, another
>> thread T2 must have queued it, found no connection available, and
>> initiated the opening of a second connection C2.
>
> I see. And does this happen only in the case of "open new connection"? How 
> about cases where all the connections are in use? If the queue, for whatever 
> reason got N requests, won't T1 try to clear them all?

When all connections are in use, you have N threads competing for the
same queue to send requests.
For HTTP1, the network latency should be enough to "break" the loop.
For HTTP2, you have N threads sending on a multiplexed connection so
ideally there will be little queuing, as every thread gets the chance
to send.

Again, for HTTP2 there could be a case where the queue is grown while
the single connection is being opened, and the connection-opening
thread will typically do the sends.
In certain cases, a sender thread may compete with the
connection-opening thread to send requests, but eventually there will
be a steady state.

>> T1 would try to acquire a connection but it cannot because C2 is not
>> opened yet, so it returns.
>
> But doesn't the "process(Connection)" method in HttpDestination continue 
> processing requests without releasing the connection?

No, the connection is released back to the pool after every
request/response cycle finishes.

> I started looking at this chasing a "Max Requests queued per Destination" 
> issue, which I believe was caused by Solr not aborting requests correctly 
> (see [2] if you are interested), so at this point is just me trying to 
> understand the code and making sure we are using it correctly.
> [2] https://issues.apache.org/jira/browse/SOLR-16229

I'll look at this and comment.

-- 
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless.   Victoria Livschitz
_______________________________________________
jetty-users mailing list
jetty-users@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to