使用MiniSolrCloudCluster创建群集时出错

时间:2019-11-07 14:59:33

标签: junit solrj solrcloud solr8

我们正在使用solr6.2版本,现在正在将其迁移到最新的solr8.2版本。所有我们的测试案例在创建集群时都失败了。我们正在使用MiniSolrCloudCluster创建集群,但是在内部使用了JettySolrRunner类,其中很少使用方法和类。因此,我们收到以下错误:

Java.lang.Exception:启动MiniSolrCloudCluster时出错     在org.apache.solr.cloud.MiniSolrCloudCluster.checkForExceptions(MiniSolrCloudCluster.java:652)     在org.apache.solr.cloud.MiniSolrCloudCluster(MiniSolrCloudCluster.java:306)     在org.apache.solr.cloud.MiniSolrCloudCluster。(MiniSolrCloudCluster.java:239)     在org.apache.solr.cloud.MiniSolrCloudCluster(MiniSolrCloudCluster.java:219)     在org.apache.solr.cloud.MiniSolrCloudCluster(MiniSolrCloudCluster.java:146) 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 禁止显示:java.lang.NoSuchMethodError:org.eclipse.jetty.util.thread.QueuedThreadPool.setReservedThreads(I)V         在org.apache.solr.client.solrj.embedded.JettySolrRunner.init(JettySolrRunner.java:265)         在org.apache.solr.client.solrj.embedded.JettySolrRunner。(JettySolrRunner.java:257)         在org.apache.solr.client.solrj.embedded.JettySolrRunner。(JettySolrRunner.java:229)         在org.apache.solr.client.solrj.embedded.JettySolrRunner(JettySolrRunner.java:216)中         在org.apache.solr.cloud.MiniSolrCloudCluster.startJettySolrRunner(MiniSolrCloudCluster.java:465)         在org.apache.solr.cloud.MiniSolrCloudCluster.lambda $ new $ 0(MiniSolrCloudCluster.java:300)         在java.util.concurrent.FutureTask.run(FutureTask.java:266)         在org.apache.solr.common.util.ExecutorUtil $ MDCAwareThreadPoolExecutor.lambda $ execute $ 0(ExecutorUtil.java:209)中         在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)         在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)         ...还有1个

 public MiniSolrCloudCluster cluster() throws Exception {
        JettyConfig jettyConfig = JettyConfig.builder().setContext("/").build();
        return new MiniSolrCloudCluster(3, Paths.get("build/cluster"), jettyConfig);
    }

请建议是否有任何方法可以使用solr-core-8.2.0创建solr集群

1 个答案:

答案 0 :(得分:0)

您可以尝试像我一样创建solr集群。

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.List;
import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
import org.apache.solr.cloud.MiniSolrCloudCluster;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;

public class MiniSolrCloudClusterUtil {
    private MiniSolrCloudCluster miniSolrCloudCluster;

    public MiniSolrCloudClusterUtil(String fileLoc, int numServers) {
        Path baseDir = (new File(fileLoc)).toPath();
        JettyConfig jettyConfig = JettyConfig.builder().setPort(0).build();

        try {
            this.miniSolrCloudCluster = new MiniSolrCloudCluster(numServers, baseDir, jettyConfig);
        } catch (Exception var6) {
            throw new IllegalArgumentException("MiniSolrCloudCluster cannot be created. ", var6);
        }
    }

    public MiniSolrCloudCluster getMiniSolrCloudCluster() {
        return this.miniSolrCloudCluster;
    }

    public ConfigSetAdminResponse listConfigSets() {
        try {
            return (new List()).process(this.miniSolrCloudCluster.getSolrClient());
        } catch (IOException | SolrServerException var2) {
            throw new IllegalArgumentException("Unable to pull config set", var2);
        }
    }

    public CollectionAdminResponse getSolrClusterStatus() {
        try {
            return CollectionAdminRequest.getClusterStatus().process(this.miniSolrCloudCluster.getSolrClient());
        } catch (IOException | SolrServerException var2) {
            throw new IllegalArgumentException("Unable to pull config set", var2);
        }
    }
}