It's too bad HttpSolrServer setup this client philosophy. It's momentum was 
directly opposite to what you want: a SolrClient that can optionally stream or 
load balance and a SolrCloudClient that wraps it.

[Mark Miller - Chat @ 
Spike](https://spikenow.com/r/a/?ref=spike-organic-signature&_ts=2kigx5)  
[2kigx5]

On April 25, 2024 at 20:07 GMT, David Smiley <dsmi...@apache.org> wrote:

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