Hi,
    
    I don't know how many of you have noticed things like this in the
      build logs:
    12:25:45 Mar 04, 2020 11:25:45 AM org.apache.http.impl.execchain.RetryExec execute
12:25:45 INFO: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {s}->https://download.eclipse.org:443: The target server failed to respond
12:25:45 Mar 04, 2020 11:25:45 AM org.apache.http.impl.execchain.RetryExec execute
12:25:45 INFO: Retrying request to {s}->https://download.eclipse.org:443
    I'm a bit concerned about the cause of such exceptions.  I've
      debugged where this happens in my Oomph environment.  Specifically
      it happens in
      org.apache.http.impl.execchain.RetryExec.execute(HttpRoute,
      HttpRequestWrapper, HttpClientContext, HttpExecutionAware) when
      parsing the response header finds nothing with the following stack
      leading to the logged problem:
    
    org.apache.http.NoHttpResponseException.<init>(java.lang.String)
      line: 47    
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(org.apache.http.io.SessionInputBuffer)
      line: 141    
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(org.apache.http.io.SessionInputBuffer)
      line: 56    
org.apache.http.impl.conn.DefaultHttpResponseParser(org.apache.http.impl.io.AbstractMessageParser<T>).parse()
      line: 259    
org.apache.http.impl.conn.LoggingManagedHttpClientConnection(org.apache.http.impl.DefaultBHttpClientConnection).receiveResponseHeader()
      line: 163    
      org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader() line:
      157    
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(org.apache.http.HttpRequest,
      org.apache.http.HttpClientConnection,
      org.apache.http.protocol.HttpContext) line: 273    
org.apache.http.protocol.HttpRequestExecutor.execute(org.apache.http.HttpRequest,
      org.apache.http.HttpClientConnection,
      org.apache.http.protocol.HttpContext) line: 125    
org.apache.http.impl.execchain.MainClientExec.execute(org.apache.http.conn.routing.HttpRoute,
      org.apache.http.client.methods.HttpRequestWrapper,
      org.apache.http.client.protocol.HttpClientContext,
      org.apache.http.client.methods.HttpExecutionAware) line: 272    
org.apache.http.impl.execchain.ProtocolExec.execute(org.apache.http.conn.routing.HttpRoute,
      org.apache.http.client.methods.HttpRequestWrapper,
      org.apache.http.client.protocol.HttpClientContext,
      org.apache.http.client.methods.HttpExecutionAware) line: 186    
org.apache.http.impl.execchain.RetryExec.execute(org.apache.http.conn.routing.HttpRoute,
      org.apache.http.client.methods.HttpRequestWrapper,
      org.apache.http.client.protocol.HttpClientContext,
      org.apache.http.client.methods.HttpExecutionAware) line: 89    
org.apache.http.impl.execchain.RedirectExec.execute(org.apache.http.conn.routing.HttpRoute,
      org.apache.http.client.methods.HttpRequestWrapper,
      org.apache.http.client.protocol.HttpClientContext,
      org.apache.http.client.methods.HttpExecutionAware) line: 110    
org.apache.http.impl.client.InternalHttpClient.doExecute(org.apache.http.HttpHost,
      org.apache.http.HttpRequest, org.apache.http.protocol.HttpContext)
      line: 185    
org.apache.http.impl.client.InternalHttpClient(org.apache.http.impl.client.CloseableHttpClient).execute(org.apache.http.client.methods.HttpUriRequest,
      org.apache.http.protocol.HttpContext) line: 83    
org.eclipse.ecf.provider.filetransfer.httpclient45.HttpClientFileSystemBrowser.runRequest()
      line: 246    
org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser$DirectoryJob.run(org.eclipse.core.runtime.IProgressMonitor)
      line: 69    
      org.eclipse.core.internal.jobs.Worker.run() line: 63    
    
    There will be two additional retries, and if those fail too, the
      repository will fail to load (or the artifact will fail to
      download).   In my product catalog generator, I load a whole whack
      of repositories and this happens frequently enough that more often
      than not, one or more repositories fail to load.  This concerns me
      because with 2 million users loading repositories (via updates or
      via the installer), a significant fraction might well run into
      this same problem.
    
    When I use
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient45
      to disable the provider for this implementation, I of course see
      no log entries nor do any repositories fail to load.
    I'm starting to get the feeling that either a) the server is
      ill-behaved or b) there is a problem in the httpclient
      implementation.  Perhaps some Keep-Alive header: is poor or not
      being respected by the implementation.
    
    I saw something similar here where the server was blamed:
     
https://support.sonatype.com/hc/en-us/articles/213465028-Understanding-The-target-server-failed-to-respond-in-Nexus-logs
    
    Does anyone have any ideas?