VishnuPriyaChandraSekar commented on code in PR #4626:
URL: https://github.com/apache/solr/pull/4626#discussion_r3555710690
##########
solr/solrj/src/test/org/apache/solr/client/solrj/impl/LB2SolrClientTest.java:
##########
@@ -405,6 +405,9 @@ private class TimeoutZombieTestContext implements
AutoCloseable {
new HttpJettySolrClient.Builder()
.withConnectionTimeout(1000, TimeUnit.MILLISECONDS)
.withIdleTimeout(1, TimeUnit.MILLISECONDS)
+ // override the infinite request timeout with idle timeout to
ensure idle requests
+ // times out.
Review Comment:
> idle refers to the longest period of not receiving any data at all from
the server.
My understanding is that idle timeout kicks in after processing response
from server and before initiating the next request. Thus idle timeout makes
sense when the socket is reused for another HTTP request. While request timeout
kicks in when client sends a request and waits for server to respond.
The test case that uses `TimeoutZombieTestContext` makes a single http
request. Thus idle timeout never comes into the picture. Additionally, the
server that is mocked for this test case, never responds to the request and
keeps the client stuck infinitely. Thus, in this case, the request timeout
should be > 0
```
public void testTimeoutExceptionMarksServerAsZombie() throws Exception {
try (TimeoutZombieTestContext ctx = new TimeoutZombieTestContext()) {
LBSolrClient.Req lbReq = ctx.createQueryRequest();
try {
ctx.lbClient.request(lbReq);
} catch (Exception e) {
}
ctx.assertZombieState();
}
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]