Hi all, I'm having some issues after I updated to the latest versions of hc-core(5.2) and hc-client (5.2).
It all started with a NPE that I started receiving in the automation tests that we have. The NPE appeared when I try to parse the response using the DefaultHttpResponseParser. I saw that actually the parse method is now returning null if the stream is empty instead of throwing an exception as it was in previous versions. Since for my needs I need to keep the old behavior, I just implemented some logic to throw the old exception in this case. So something like this: final ClassicHttpResponse response = responseParser.parse(inbuffer, is); if (response == null) { throw new NoHttpResponseException("The target server failed to respond"); } But after this, I started getting issues with one of the tests. I started getting this exception, but not on each run, it happens sporadically (in like 60-70% of the time). Since I'm using keep alive (connection re-usage), my first guess was that some broken connection is getting used. And in fact in the logs I can see that a connection to the same route is being reused multiple times until we get this exception. I checked that such issues could be solved by setting .setValidityAfterInactivity() to the connection manager, but the thing is that I've already set it to 5 seconds. Anyway, I saw that this method is deprecated and that is why I changed it and now set it to the DefaultConnectionConfig. This also doesn't help. Here you can see what is the current configuration of the ConnectionManager: conMan = new PoolingHttpClientConnectionManager(RegistryBuilder.<ConnectionSocketFactory> create().register("http", new CustomStrictSocketFactory()).register("https", new CustomStrictSSLSocketFactory()).build(), new CustomHTTPConnectionFactory(), DefaultSchemePortResolver.INSTANCE, null, -1, TimeUnit.SECONDS); conMan.setDefaultMaxPerRoute(getMaxConnectionsPerHost()); conMan.setMaxTotal(getMaxTotalConnections()); conMan.setDefaultConnectionConfig(ConnectionConfig.custom() .setValidateAfterInactivity(TimeValue.of(5000, TimeUnit.MILLISECONDS)) .setConnectTimeout(Timeout.of(getConnectionTimeout(), TimeUnit.SECONDS)) .build()); There are no changes in the failing test case for years. There are no changes in all backend logic involved in it, at least for the last few weeks. The only change was the update of the runtime to hc-core 5.2 and hc-client 5.2 By the way, I tried to update to hc-client 5.2.1, but the issue is still there. My question is - is there some new configuration that is needed in case to be sure that no stale connections will be used? Is there any significant change in the way the connections are getting validated? Does anyone else experience such issues? In general any ideas and information will be helpful! Best Regards, Yavor SEEBURGER AG Vorstand/SEEBURGER Executive Board: Sitz der Gesellschaft/Registered Office: Axel Haas, Michael Kleeberg, Axel Otto, Dr. Martin Kuntz, Matthias Fe?enbecker Edisonstr. 1 D-75015 Bretten Vorsitzende des Aufsichtsrats/Chairperson of the SEEBURGER Supervisory Board: Tel.: 07252 / 96 - 0 Prof. Dr. Simone Zeuchner Fax: 07252 / 96 - 2222 Internet: http://www.seeburger.de Registergericht/Commercial Register: e-mail: i...@seeburger.de HRB 240708 Mannheim Dieses E-Mail ist nur f?r den Empf?nger bestimmt, an den es gerichtet ist und kann vertrauliches bzw. unter das Berufsgeheimnis fallendes Material enthalten. Jegliche darin enthaltene Ansicht oder Meinungs?u?erung ist die des Autors und stellt nicht notwendigerweise die Ansicht oder Meinung der SEEBURGER AG dar. Sind Sie nicht der Empf?nger, so haben Sie diese E-Mail irrt?mlich erhalten und jegliche Verwendung, Ver?ffentlichung, Weiterleitung, Abschrift oder jeglicher Druck dieser E-Mail ist strengstens untersagt. Weder die SEEBURGER AG noch der Absender (Stankov. Yavor) ?bernehmen die Haftung f?r Viren; es obliegt Ihrer Verantwortung, die E-Mail und deren Anh?nge auf Viren zu pr?fen. This email is intended only for the recipient(s) to whom it is addressed. This email may contain confidential material that may be protected by professional secrecy. Any fact or opinion contained, or expression of the material herein, does not necessarily reflect that of SEEBURGER AG. If you are not the addressee or if you have received this email in error, any use, publication or distribution including forwarding, copying or printing is strictly prohibited. Neither SEEBURGER AG, nor the sender (Stankov. Yavor) accept liability for viruses; it is your responsibility to check this email and its attachments for viruses.