hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Kalnichevski (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HTTPCORE-253) getMetrics() does not work for HEAD or other early release methods
Date Tue, 12 Apr 2011 08:34:05 GMT

     [ https://issues.apache.org/jira/browse/HTTPCORE-253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Oleg Kalnichevski updated HTTPCORE-253:

    Fix Version/s: 4.2

It may be not enough to store a reference to the metrics as the HTTP connection can be immediately
leased by another thread of execution, which may alter the metrics. I suspect we will have
to create a deep copy of the metrics object if you want to preserve the exact state of the
metrics object as it was at the end of the request execution.


> getMetrics() does not work for HEAD or other early release methods
> ------------------------------------------------------------------
>                 Key: HTTPCORE-253
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-253
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>            Reporter: Sebb
>             Fix For: 4.2
> The following code works fine for GET:
>            HttpResponse httpResponse =
> httpClient.execute(httpRequest, localContext);
>            HttpConnection conn = (HttpConnection)
> localContext.getAttribute(ExecutionContext.HTTP_CONNECTION);
>            HttpConnectionMetrics metrics = conn.getMetrics();
> but fails on the getMetrics() call when the request is HEAD:
>        org.apache.http.impl.conn.ConnectionShutdownException
>        at org.apache.http.impl.conn.AbstractClientConnAdapter.assertValid(AbstractClientConnAdapter.java:154)
>        at org.apache.http.impl.conn.AbstractClientConnAdapter.getMetrics(AbstractClientConnAdapter.java:190)
> This is because the getMetrics() method calls assertValid() which checks that the connection
has not been released, and the HEAD request is released as soon as it completes, before returning
to the caller.
> Possible solutions:
> - don't call assertValid() in getMetrics()
> - store a pointer to the metrics in the local context

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message