Search in sources :

Example 81 with CoreContainer

use of org.apache.solr.core.CoreContainer in project lucene-solr by apache.

the class GraphHandler method inform.

public void inform(SolrCore core) {
    /* The stream factory will always contain the zkUrl for the given collection
     * Adds default streams with their corresponding function names. These
     * defaults can be overridden or added to in the solrConfig in the stream
     * RequestHandler def. Example config override
     *  <lst name="streamFunctions">
     *    <str name="group">org.apache.solr.client.solrj.io.stream.ReducerStream</str>
     *    <str name="count">org.apache.solr.client.solrj.io.stream.RecordCountStream</str>
     *  </lst>
     * */
    String defaultCollection;
    String defaultZkhost;
    CoreContainer coreContainer = core.getCoreContainer();
    this.coreName = core.getName();
    if (coreContainer.isZooKeeperAware()) {
        defaultCollection = core.getCoreDescriptor().getCollectionName();
        defaultZkhost = core.getCoreContainer().getZkController().getZkServerAddress();
        streamFactory.withCollectionZkHost(defaultCollection, defaultZkhost);
        streamFactory.withDefaultZkHost(defaultZkhost);
    }
    streamFactory.withFunctionName("search", CloudSolrStream.class).withFunctionName("merge", MergeStream.class).withFunctionName("unique", UniqueStream.class).withFunctionName("top", RankStream.class).withFunctionName("group", GroupOperation.class).withFunctionName("reduce", ReducerStream.class).withFunctionName("parallel", ParallelStream.class).withFunctionName("rollup", RollupStream.class).withFunctionName("stats", StatsStream.class).withFunctionName("innerJoin", InnerJoinStream.class).withFunctionName("leftOuterJoin", LeftOuterJoinStream.class).withFunctionName("hashJoin", HashJoinStream.class).withFunctionName("outerHashJoin", OuterHashJoinStream.class).withFunctionName("facet", FacetStream.class).withFunctionName("update", UpdateStream.class).withFunctionName("jdbc", JDBCStream.class).withFunctionName("intersect", IntersectStream.class).withFunctionName("select", SelectStream.class).withFunctionName("complement", ComplementStream.class).withFunctionName("daemon", DaemonStream.class).withFunctionName("topic", TopicStream.class).withFunctionName("shortestPath", ShortestPathStream.class).withFunctionName("gatherNodes", GatherNodesStream.class).withFunctionName("nodes", GatherNodesStream.class).withFunctionName(SORT, SortStream.class).withFunctionName("scoreNodes", ScoreNodesStream.class).withFunctionName("random", RandomStream.class).withFunctionName("min", MinMetric.class).withFunctionName("max", MaxMetric.class).withFunctionName("avg", MeanMetric.class).withFunctionName("sum", SumMetric.class).withFunctionName("count", CountMetric.class).withFunctionName("replace", ReplaceOperation.class).withFunctionName("concat", ConcatOperation.class).withFunctionName("group", GroupOperation.class).withFunctionName("distinct", DistinctOperation.class);
    // This pulls all the overrides and additions from the config
    Object functionMappingsObj = initArgs.get("streamFunctions");
    if (null != functionMappingsObj) {
        NamedList<?> functionMappings = (NamedList<?>) functionMappingsObj;
        for (Entry<String, ?> functionMapping : functionMappings) {
            Class<? extends Expressible> clazz = core.getResourceLoader().findClass((String) functionMapping.getValue(), Expressible.class);
            streamFactory.withFunctionName(functionMapping.getKey(), clazz);
        }
    }
}
Also used : GatherNodesStream(org.apache.solr.client.solrj.io.graph.GatherNodesStream) NamedList(org.apache.solr.common.util.NamedList) MaxMetric(org.apache.solr.client.solrj.io.stream.metrics.MaxMetric) SumMetric(org.apache.solr.client.solrj.io.stream.metrics.SumMetric) ReplaceOperation(org.apache.solr.client.solrj.io.ops.ReplaceOperation) CoreContainer(org.apache.solr.core.CoreContainer) GroupOperation(org.apache.solr.client.solrj.io.ops.GroupOperation)

Example 82 with CoreContainer

use of org.apache.solr.core.CoreContainer in project lucene-solr by apache.

the class ReplicationHandler method doSnapShoot.

private void doSnapShoot(SolrParams params, SolrQueryResponse rsp, SolrQueryRequest req) {
    try {
        int numberToKeep = params.getInt(NUMBER_BACKUPS_TO_KEEP_REQUEST_PARAM, 0);
        if (numberToKeep > 0 && numberBackupsToKeep > 0) {
            throw new SolrException(ErrorCode.BAD_REQUEST, "Cannot use " + NUMBER_BACKUPS_TO_KEEP_REQUEST_PARAM + " if " + NUMBER_BACKUPS_TO_KEEP_INIT_PARAM + " was specified in the configuration.");
        }
        numberToKeep = Math.max(numberToKeep, numberBackupsToKeep);
        if (numberToKeep < 1) {
            numberToKeep = Integer.MAX_VALUE;
        }
        IndexCommit indexCommit = null;
        String commitName = params.get(CoreAdminParams.COMMIT_NAME);
        if (commitName != null) {
            SolrSnapshotMetaDataManager snapshotMgr = core.getSnapshotMetaDataManager();
            Optional<IndexCommit> commit = snapshotMgr.getIndexCommitByName(commitName);
            if (commit.isPresent()) {
                indexCommit = commit.get();
            } else {
                throw new SolrException(ErrorCode.BAD_REQUEST, "Unable to find an index commit with name " + commitName + " for core " + core.getName());
            }
        } else {
            IndexDeletionPolicyWrapper delPolicy = core.getDeletionPolicy();
            indexCommit = delPolicy.getLatestCommit();
            if (indexCommit == null) {
                indexCommit = req.getSearcher().getIndexReader().getIndexCommit();
            }
        }
        String location = params.get(CoreAdminParams.BACKUP_LOCATION);
        String repoName = params.get(CoreAdminParams.BACKUP_REPOSITORY);
        CoreContainer cc = core.getCoreContainer();
        BackupRepository repo = null;
        if (repoName != null) {
            repo = cc.newBackupRepository(Optional.of(repoName));
            location = repo.getBackupLocation(location);
            if (location == null) {
                throw new IllegalArgumentException("location is required");
            }
        } else {
            repo = new LocalFileSystemRepository();
            if (location == null) {
                location = core.getDataDir();
            } else {
                location = core.getCoreDescriptor().getInstanceDir().resolve(location).normalize().toString();
            }
        }
        // small race here before the commit point is saved
        URI locationUri = repo.createURI(location);
        SnapShooter snapShooter = new SnapShooter(repo, core, locationUri, params.get(NAME), commitName);
        snapShooter.validateCreateSnapshot();
        snapShooter.createSnapAsync(indexCommit, numberToKeep, (nl) -> snapShootDetails = nl);
    } catch (Exception e) {
        LOG.warn("Exception during creating a snapshot", e);
        rsp.add("exception", e);
    }
}
Also used : IndexDeletionPolicyWrapper(org.apache.solr.core.IndexDeletionPolicyWrapper) LocalFileSystemRepository(org.apache.solr.core.backup.repository.LocalFileSystemRepository) URI(java.net.URI) IndexCommit(org.apache.lucene.index.IndexCommit) NoSuchFileException(java.nio.file.NoSuchFileException) SolrException(org.apache.solr.common.SolrException) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) SolrSnapshotMetaDataManager(org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager) BackupRepository(org.apache.solr.core.backup.repository.BackupRepository) CoreContainer(org.apache.solr.core.CoreContainer) SolrException(org.apache.solr.common.SolrException)

Example 83 with CoreContainer

use of org.apache.solr.core.CoreContainer in project lucene-solr by apache.

the class SQLHandler method inform.

public void inform(SolrCore core) {
    CoreContainer coreContainer = core.getCoreContainer();
    if (coreContainer.isZooKeeperAware()) {
        defaultZkhost = core.getCoreContainer().getZkController().getZkServerAddress();
        defaultWorkerCollection = core.getCoreDescriptor().getCollectionName();
        isCloud = true;
    }
}
Also used : CoreContainer(org.apache.solr.core.CoreContainer)

Example 84 with CoreContainer

use of org.apache.solr.core.CoreContainer in project lucene-solr by apache.

the class JoinQuery method createParser.

@Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
    return new QParser(qstr, localParams, params, req) {

        @Override
        public Query parse() throws SyntaxError {
            if (localParams != null && localParams.get(ScoreJoinQParserPlugin.SCORE) != null) {
                return new ScoreJoinQParserPlugin().createParser(qstr, localParams, params, req).parse();
            } else {
                return parseJoin();
            }
        }

        Query parseJoin() throws SyntaxError {
            final String fromField = getParam("from");
            final String fromIndex = getParam("fromIndex");
            final String toField = getParam("to");
            final String v = localParams.get("v");
            final String coreName;
            Query fromQuery;
            long fromCoreOpenTime = 0;
            if (fromIndex != null && !fromIndex.equals(req.getCore().getCoreDescriptor().getName())) {
                CoreContainer container = req.getCore().getCoreContainer();
                // if in SolrCloud mode, fromIndex should be the name of a single-sharded collection
                coreName = ScoreJoinQParserPlugin.getCoreName(fromIndex, container);
                final SolrCore fromCore = container.getCore(coreName);
                if (fromCore == null) {
                    throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Cross-core join: no such core " + coreName);
                }
                RefCounted<SolrIndexSearcher> fromHolder = null;
                LocalSolrQueryRequest otherReq = new LocalSolrQueryRequest(fromCore, params);
                try {
                    QParser parser = QParser.getParser(v, otherReq);
                    fromQuery = parser.getQuery();
                    fromHolder = fromCore.getRegisteredSearcher();
                    if (fromHolder != null)
                        fromCoreOpenTime = fromHolder.get().getOpenNanoTime();
                } finally {
                    otherReq.close();
                    fromCore.close();
                    if (fromHolder != null)
                        fromHolder.decref();
                }
            } else {
                coreName = null;
                QParser fromQueryParser = subQuery(v, null);
                fromQueryParser.setIsFilter(true);
                fromQuery = fromQueryParser.getQuery();
            }
            JoinQuery jq = new JoinQuery(fromField, toField, coreName == null ? fromIndex : coreName, fromQuery);
            jq.fromCoreOpenTime = fromCoreOpenTime;
            return jq;
        }
    };
}
Also used : LocalSolrQueryRequest(org.apache.solr.request.LocalSolrQueryRequest) Query(org.apache.lucene.search.Query) CoreContainer(org.apache.solr.core.CoreContainer) SolrCore(org.apache.solr.core.SolrCore) ScoreJoinQParserPlugin(org.apache.solr.search.join.ScoreJoinQParserPlugin) SolrException(org.apache.solr.common.SolrException)

Example 85 with CoreContainer

use of org.apache.solr.core.CoreContainer in project lucene-solr by apache.

the class TestLeaderElectionZkExpiry method testLeaderElectionWithZkExpiry.

@Test
public void testLeaderElectionWithZkExpiry() throws Exception {
    String zkDir = createTempDir("zkData").toFile().getAbsolutePath();
    Path ccDir = createTempDir("testLeaderElectionWithZkExpiry-solr");
    CoreContainer cc = createCoreContainer(ccDir, SOLRXML);
    final ZkTestServer server = new ZkTestServer(zkDir);
    server.setTheTickTime(1000);
    SolrZkClient zc = null;
    try {
        server.run();
        AbstractZkTestCase.tryCleanSolrZkNode(server.getZkHost());
        AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
        CloudConfig cloudConfig = new CloudConfig.CloudConfigBuilder("dummy.host.com", 8984, "solr").setLeaderConflictResolveWait(180000).setLeaderVoteWait(180000).build();
        final ZkController zkController = new ZkController(cc, server.getZkAddress(), 15000, cloudConfig, new CurrentCoreDescriptorProvider() {

            @Override
            public List<CoreDescriptor> getCurrentDescriptors() {
                return Collections.EMPTY_LIST;
            }
        });
        try {
            Thread killer = new Thread() {

                @Override
                public void run() {
                    long timeout = System.nanoTime() + TimeUnit.NANOSECONDS.convert(10, TimeUnit.SECONDS);
                    while (System.nanoTime() < timeout) {
                        long sessionId = zkController.getZkClient().getSolrZooKeeper().getSessionId();
                        server.expire(sessionId);
                        try {
                            Thread.sleep(10);
                        } catch (InterruptedException e) {
                        }
                    }
                }
            };
            killer.start();
            killer.join();
            long timeout = System.nanoTime() + TimeUnit.NANOSECONDS.convert(60, TimeUnit.SECONDS);
            zc = new SolrZkClient(server.getZkAddress(), LeaderElectionTest.TIMEOUT);
            boolean found = false;
            while (System.nanoTime() < timeout) {
                try {
                    String leaderNode = OverseerCollectionConfigSetProcessor.getLeaderNode(zc);
                    if (leaderNode != null && !leaderNode.trim().isEmpty()) {
                        log.info("Time={} Overseer leader is = {}", System.nanoTime(), leaderNode);
                        found = true;
                        break;
                    }
                } catch (KeeperException.NoNodeException nne) {
                // ignore
                }
            }
            assertTrue(found);
        } finally {
            zkController.close();
        }
    } finally {
        if (zc != null)
            zc.close();
        cc.shutdown();
        server.shutdown();
    }
}
Also used : Path(java.nio.file.Path) CloudConfig(org.apache.solr.core.CloudConfig) SolrZkClient(org.apache.solr.common.cloud.SolrZkClient) CoreContainer(org.apache.solr.core.CoreContainer) List(java.util.List) KeeperException(org.apache.zookeeper.KeeperException) Test(org.junit.Test)

Aggregations

CoreContainer (org.apache.solr.core.CoreContainer)95 SolrCore (org.apache.solr.core.SolrCore)30 Test (org.junit.Test)23 SolrException (org.apache.solr.common.SolrException)16 JettySolrRunner (org.apache.solr.client.solrj.embedded.JettySolrRunner)14 File (java.io.File)13 HashMap (java.util.HashMap)11 Replica (org.apache.solr.common.cloud.Replica)11 CoreDescriptor (org.apache.solr.core.CoreDescriptor)11 Path (java.nio.file.Path)10 IOException (java.io.IOException)9 ArrayList (java.util.ArrayList)8 SolrMetricManager (org.apache.solr.metrics.SolrMetricManager)8 SolrQueryResponse (org.apache.solr.response.SolrQueryResponse)8 Map (java.util.Map)7 SolrResourceLoader (org.apache.solr.core.SolrResourceLoader)7 Properties (java.util.Properties)6 DocCollection (org.apache.solr.common.cloud.DocCollection)6 Slice (org.apache.solr.common.cloud.Slice)6 SolrZkClient (org.apache.solr.common.cloud.SolrZkClient)6