Hi,
Teamsite product uses solr from version 7.x and has been upgrading to version
8.11.2 with no issues. However, when we tried to upgrade to solr 9, we are
seeing many issues with compilation due to package structure changes/class
removals/internal method implementation changes, etc.
We changed our configuration files and made code changes to fix these
compilation issues but facing issues with the below code change.
Teamsite code using solr:
builder = new CloudSolrClient
.Builder(Collections.singletonList(mServerDetails.getZookeeperUrl()),
Optional.empty())
.withHttpClient(getSecureClient());
private CloseableHttpClient getSecureClient() {
CloseableHttpClient cHttpClient = null;
try {
TrustStrategy acceptingTrustStrategy = (cert, authType) -> true;
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null,
acceptingTrustStrategy).build();
SSLConnectionSocketFactory sslConnectionSocketFactory = new
SSLConnectionSocketFactory(sslContext, new DefaultHostnameVerifier());
Registry<ConnectionSocketFactory> socketFactoryRegistry =
RegistryBuilder.<ConnectionSocketFactory>create().
register(SCHEMA_HTTPS, sslConnectionSocketFactory).build();
BasicHttpClientConnectionManager connectionManager = new
BasicHttpClientConnectionManager(socketFactoryRegistry);
cHttpClient =
HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).setConnectionManager(connectionManager).build();
} catch(NoSuchAlgorithmException | KeyStoreException |
KeyManagementException ex)
{
mLogger.atError().log("Processing httpclient failed.: {}", ex);
}
return cHttpClient;
Here while building solrCloudClient withHttpClient method was accepting the
httpClient type parameter till now. However, the solr9 withHttpClient method
accepts the Http2SolrClient type parameter. The local build compilation is
failing because of this typecast issue.
We tried to find an alternative code fix for this by trying many approaches but
did not work. Could you please provide an alternative approach for this?
Also,
Teamsite implementation:
ZkClientClusterStateProvider zkClusterClient = new
ZkClientClusterStateProvider(zookeeperURL);
try{
zkClusterClient.uploadConfig(configFolder.toPath(), configName);
}
This was also throwing issue because of the method implementation change, So I
changed the code like below,
SolrZkClient zkClient = new SolrZkClient(zookeeperURL, 300);
ZkConfigSetService zkConfigSet = new ZkConfigSetService(zkClient);
try
{
zkConfigSet.uploadConfig(configName, configFolder.toPath());
}
Please let me know if this usage is valid, if not please let me know the
alternative for this as well.
Thanks & Regards,
​Keerthi Turakapalli