Our SolrJ class hierarchy is looking rather confusing right now for
the HTTP ones especially.  This message is mostly a big FYI, with some
reflections and a recommendation or two.

SolrClient
- BaseHttpSolrClient (NOT yet deprecated but should be?)
- - HttpSolrClient  (based on Apache HttpClient; deprecated)
- - - DelegationTokenHttpSolrClient
- CloudSolrClient
- - CloudHttp2SolrClient
- - CloudLegacySolrClient (based on Apache HttpClient; deprecated)
- ConcurrentUpdateHttp2SolrClient
- - ...
- ConcurrentUpdateSolrClient (based on Apache HttpClient; deprecated)
- - ...
- HttpSolrClientBase (this is new)
- - Http2SolrClient
- - HttpJdkSolrClient (this is new; based on the JDK HttpClient)
- LBSolrClient
- - LBHttp2SolrClient
- - LBHttpSolrClient (based on Apache HttpClient; deprecated)

In retrospect, we can see that some past names weren't so great after
all.  I think our clients should reflect the vendor/source of the
HttpClient.  "HttpJdkSolrClient" is the newest client, and it reflects
the vendor (JDK provided HttpClient).  Personally I don't care enough
to rename all the ones with "2" in there to have "Jetty" but that's
what they are -- if it has a "2", it's using Jetty (and it supports
1.1; FYI JDK also supports both 1.1 and 2 as well).  The clients for
Apache HttpClient are all deprecated so perhaps we continue to leave
them be, mostly.  Removing them will take some time; they are
entrenched!  BaseHttpSolrClient (the parent of HttpSolrClient) is at
the moment even more confusing because HttpSolrClientBase was just
added.  BaseHttpSolrClient should be removed now; it only holds 2
static inner classes for RemoteSolrException and
RemoteExecutionException which should find a new home somewhere.
Since they are referenced so much, that will happen only in main.
HttpSolrClientBase is a tempting home but SolrClient would be fine, I
think.

Also, just because we have a nice new HttpJdkSolrClient, doesn't mean
we can yet advise anyone to safely remove Apache & Jetty dependencies
*yet*!  We have no tests that this works, and a quick attempt I did
recently showed there are some obscure references still!  Modularizing
SolrJ further (for Jetty & Apache) will help reveal where we have some
references, after which we can finally free users of needing those
dependencies.

~ David Smiley
Apache Lucene/Solr Search Developer
http://www.linkedin.com/in/davidwsmiley

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
For additional commands, e-mail: dev-h...@solr.apache.org

Reply via email to