28
28
import java .lang .invoke .MethodHandles ;
29
29
import java .util .List ;
30
30
import java .util .Set ;
31
- import org .apache .http .client .HttpClient ;
32
31
import org .apache .solr .client .solrj .SolrClient ;
33
32
import org .apache .solr .client .solrj .SolrRequest ;
34
33
import org .apache .solr .client .solrj .SolrServerException ;
35
- import org .apache .solr .client .solrj .impl .HttpSolrClient ;
36
34
import org .apache .solr .client .solrj .request .QueryRequest ;
37
35
import org .apache .solr .client .solrj .response .QueryResponse ;
38
36
import org .apache .solr .cloud .ZkController ;
@@ -56,7 +54,9 @@ public class PeerSyncWithLeader implements SolrMetricProducer {
56
54
57
55
private UpdateHandler uhandler ;
58
56
private UpdateLog ulog ;
59
- private SolrClient clientToLeader ;
57
+ private final SolrClient clientToLeader ;
58
+ private final String coreName ;
59
+ private final String leaderBaseUrl ;
60
60
61
61
private boolean doFingerprint ;
62
62
@@ -79,15 +79,10 @@ public PeerSyncWithLeader(SolrCore core, String leaderUrl, int nUpdates) {
79
79
this .doFingerprint = !"true" .equals (System .getProperty ("solr.disableFingerprint" ));
80
80
this .uhandler = core .getUpdateHandler ();
81
81
this .ulog = uhandler .getUpdateLog ();
82
- HttpClient httpClient = core .getCoreContainer ().getUpdateShardHandler ().getDefaultHttpClient ();
83
82
84
- final var leaderBaseUrl = URLUtil .extractBaseUrl (leaderUrl );
85
- final var coreName = URLUtil .extractCoreFromCoreUrl (leaderUrl );
86
- this .clientToLeader =
87
- new HttpSolrClient .Builder (leaderBaseUrl )
88
- .withDefaultCollection (coreName )
89
- .withHttpClient (httpClient )
90
- .build ();
83
+ leaderBaseUrl = URLUtil .extractBaseUrl (leaderUrl );
84
+ coreName = URLUtil .extractCoreFromCoreUrl (leaderUrl );
85
+ clientToLeader = core .getCoreContainer ().getUpdateShardHandler ().getRecoveryOnlyHttpClient ();
91
86
92
87
this .updater = new PeerSync .Updater (msg (), core );
93
88
@@ -201,11 +196,6 @@ public PeerSync.PeerSyncResult sync(List<Long> startingVersions) {
201
196
if (timerContext != null ) {
202
197
timerContext .close ();
203
198
}
204
- try {
205
- clientToLeader .close ();
206
- } catch (IOException e ) {
207
- log .warn ("{} unable to close client to leader" , msg (), e );
208
- }
209
199
}
210
200
}
211
201
@@ -343,7 +333,9 @@ private boolean handleUpdates(
343
333
344
334
private NamedList <Object > request (ModifiableSolrParams params , String onFail ) {
345
335
try {
346
- QueryResponse rsp = new QueryRequest (params , SolrRequest .METHOD .POST ).process (clientToLeader );
336
+ QueryRequest request = new QueryRequest (params , SolrRequest .METHOD .POST );
337
+ request .setBasePath (leaderBaseUrl );
338
+ QueryResponse rsp = request .process (clientToLeader , coreName );
347
339
Exception exception = rsp .getException ();
348
340
if (exception != null ) {
349
341
throw new SolrException (SolrException .ErrorCode .SERVER_ERROR , onFail );
0 commit comments