While we're on the subject, I want to add that upgrading from beta9 to
beta10 caused some of my integration tests to fail. I have not yet had a
chance to investigate the root cause.

On Sun, Nov 3, 2019 at 1:50 PM Michael Osipov <micha...@apache.org> wrote:

> Hi folks,
>
> I have made a shallow, non-exhaustive (maybe wrong) review of the
> codebase before 5.0 GA to have the chance to improve things which will
> be frozen afterwards:
>
> Specific spots:
> * org.apache.hc.core5.net.Host.create(String) +
> org.apache.hc.core5.net.URIAuthority.create(String) +
>    org.apache.hc.core5.http.HttpHost.create(String):
> ** Will fail on IPv6 addresses when the port is extacted. One has to
> probe for brackets: []
>     Note that those brackets likely need to be dropped when a socket is
> obtained, but readded when
>     a string compound 'host:post' is build
> * org.apache.hc.core5.net.InetAddressUtils
> ** Parsing may fail when an IPv6 scope id might be provided
> * org.apache.hc.core5.reactor.InternalDataChannel.startTls(SSLContext,
> NamedEndpoint, SSLBufferMode, SSLSessionInitializer, SSLSessionVerifier,
> Timeout):
> ** Eclipse tells me: resource leak: '<unassigned Closeable value>' is
> never closed
>     If that is not the case maybe a comment or a suppress should be added
> *
>
> org.apache.hc.core5.reactor.IOReactorConfig.Builder.DefaultMaxIoThreadCount:
> ** Why is that pascal case?
> * org.apache.hc.core5.reactor.IOReactorConfig.toString():
> ** selectIntervalMillis: TimeValue already provides a unit: should be
> 'selectInterval'
> * org.apache.hc.core5.reactor.MultiCoreIOReactor.toString():
> ** Is it really helpful to call super.toString() here?
> * org.apache.hc.core5.http.impl.bootstrap.HttpServer.HttpServer(int,
> HttpService, InetAddress, SocketConfig, ServerSocketFactory,
> HttpConnectionFactory<? extends DefaultBHttpServerConnection>,
> Callback<SSLParameters>, ExceptionListener)
> ** Partial bound check only for the port
> ** I am also confused why the port comes before the address in the
> constructor
> *
> org.apache.hc.core5.http.impl.nio.ClientHttp1StreamDuplexer.updateInputMetrics(HttpResponse,
>
> BasicHttpConnectionMetrics) and other spots:
> ** Use a constant for that literal
> * org.apache.hc.core5.http.message.HeaderGroup.getHeader(String):
> ** The exception message looks odd
> * org.apache.hc.core5.http.message.ParserCursor:
> ** Could probably use Args magic to avoid duplicate code
> * org.apache.hc.core5.http.Chars
> ** I've seen several spots in the code redefining the same constants
> over and over again
> * org.apache.hc.core5.http.ContentType:
> ** I am confused why almost all 'application/*+xml' use ISO-8859-1
> although default encoding of XML is UTF-8
> * org.apache.hc.core5.util.Args.notNull(T, String):
> ** Don't throw IAE on null. Null requires an NPE. This is has been
> concensus for many years. Also done so in Commons Lang's Validate class
> * org.apache.hc.core5.util.Asserts:
> **  Why retain if there is Args?
> * org.apache.hc.core5.util.LangUtils:
> ** Remove methods which are in Objects already
>
> General:
> * Using System.currentTimeMillis() is discouraged for measuring elapsed
> time, one shall use System.nanoTime()
> * This may be highly subjective, but when Args is used to check nulls or
> similar, the same arg name style, e.g.,
>    requestTimeout shall be retained in the final string. It makes
> grepping and identifying easier for the developer.
> * On several occasions when no value is provided by the client a literal
> default value is used, constants would be better in such cases.
> * Inconsistent buffer sizes, some use 2048 other 8192. If on purpose
> then it might require documentation.
> * As discussed recently for the TimeValue class, this now applies in
> general:
>    I highly dislike the usage of '%,d' as all texts are in English, but
> the target locale is unknown.
>    This will cause confusion with non-English clients. It shall be
> reverted/adjusted to %d.
> * I don't know how far this code has been reviewed for RFC 7230 and
> friends, but there are a lot of refs to the old RFCs
> * URI/host parsing. I have seen code which is done over and over again,
> e.g., Host and HttpHost. Isn't HttpHost simply a specialization of Host?
>
> My deepest kudos to all committers who created this massive amount of
> decent code!
>
> Michael
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
> For additional commands, e-mail: dev-h...@hc.apache.org
>
>

Reply via email to