Search in sources :

Example 36 with NamedList

use of org.apache.solr.common.util.NamedList in project lucene-solr by apache.

the class ConfigSetProperties method readFromInputStream.

public static NamedList readFromInputStream(InputStreamReader reader) {
    try {
        JSONParser jsonParser = new JSONParser(reader);
        Object object = ObjectBuilder.getVal(jsonParser);
        if (!(object instanceof Map)) {
            final String objectClass = object == null ? "null" : object.getClass().getName();
            throw new SolrException(ErrorCode.SERVER_ERROR, "Invalid JSON type " + objectClass + ", expected Map");
        }
        return new NamedList((Map) object);
    } catch (Exception ex) {
        throw new SolrException(ErrorCode.SERVER_ERROR, "Unable to load ConfigSet properties", ex);
    } finally {
        IOUtils.closeQuietly(reader);
    }
}
Also used : NamedList(org.apache.solr.common.util.NamedList) JSONParser(org.noggit.JSONParser) Map(java.util.Map) SolrException(org.apache.solr.common.SolrException) SolrException(org.apache.solr.common.SolrException)

Example 37 with NamedList

use of org.apache.solr.common.util.NamedList in project lucene-solr by apache.

the class ConfigSetService method getConfig.

/**
   * Load the ConfigSet for a core
   * @param dcore the core's CoreDescriptor
   * @return a ConfigSet
   */
public final ConfigSet getConfig(CoreDescriptor dcore) {
    SolrResourceLoader coreLoader = createCoreResourceLoader(dcore);
    try {
        // ConfigSet properties are loaded from ConfigSetProperties.DEFAULT_FILENAME file.
        // ConfigSet flags are loaded from the metadata of the ZK node of the configset.
        NamedList properties = createConfigSetProperties(dcore, coreLoader);
        NamedList flags = getConfigSetFlags(dcore, coreLoader);
        boolean trusted = (coreLoader instanceof ZkSolrResourceLoader && flags != null && flags.get("trusted") != null && !flags.getBooleanArg("trusted")) ? false : true;
        SolrConfig solrConfig = createSolrConfig(dcore, coreLoader);
        IndexSchema schema = createIndexSchema(dcore, solrConfig);
        return new ConfigSet(configName(dcore), solrConfig, schema, properties, trusted);
    } catch (Exception e) {
        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Could not load conf for core " + dcore.getName() + ": " + e.getMessage(), e);
    }
}
Also used : ZkSolrResourceLoader(org.apache.solr.cloud.ZkSolrResourceLoader) NamedList(org.apache.solr.common.util.NamedList) IndexSchema(org.apache.solr.schema.IndexSchema) ZkSolrResourceLoader(org.apache.solr.cloud.ZkSolrResourceLoader) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) SolrException(org.apache.solr.common.SolrException) SolrException(org.apache.solr.common.SolrException)

Example 38 with NamedList

use of org.apache.solr.common.util.NamedList in project lucene-solr by apache.

the class AbstractSolrEventListener method addEventParms.

/**
   * Add the {@link org.apache.solr.common.params.EventParams#EVENT} with either the {@link org.apache.solr.common.params.EventParams#NEW_SEARCHER}
   * or {@link org.apache.solr.common.params.EventParams#FIRST_SEARCHER} values depending on the value of currentSearcher.
   * <p>
   * Makes a copy of NamedList and then adds the parameters.
   *
   *
   * @param currentSearcher If null, add FIRST_SEARCHER, otherwise NEW_SEARCHER
   * @param nlst The named list to add the EVENT value to
   */
protected NamedList addEventParms(SolrIndexSearcher currentSearcher, NamedList nlst) {
    NamedList result = new NamedList();
    result.addAll(nlst);
    if (currentSearcher != null) {
        result.add(EventParams.EVENT, EventParams.NEW_SEARCHER);
    } else {
        result.add(EventParams.EVENT, EventParams.FIRST_SEARCHER);
    }
    return result;
}
Also used : NamedList(org.apache.solr.common.util.NamedList)

Example 39 with NamedList

use of org.apache.solr.common.util.NamedList in project lucene-solr by apache.

the class CollectionsHandler method handleResponse.

private SolrResponse handleResponse(String operation, ZkNodeProps m, SolrQueryResponse rsp, long timeout) throws KeeperException, InterruptedException {
    long time = System.nanoTime();
    if (m.containsKey(ASYNC) && m.get(ASYNC) != null) {
        String asyncId = m.getStr(ASYNC);
        if (asyncId.equals("-1")) {
            throw new SolrException(ErrorCode.BAD_REQUEST, "requestid can not be -1. It is reserved for cleanup purposes.");
        }
        NamedList<String> r = new NamedList<>();
        if (coreContainer.getZkController().getOverseerCompletedMap().contains(asyncId) || coreContainer.getZkController().getOverseerFailureMap().contains(asyncId) || coreContainer.getZkController().getOverseerRunningMap().contains(asyncId) || overseerCollectionQueueContains(asyncId)) {
            r.add("error", "Task with the same requestid already exists.");
        } else {
            coreContainer.getZkController().getOverseerCollectionQueue().offer(Utils.toJSON(m));
        }
        r.add(CoreAdminParams.REQUESTID, (String) m.get(ASYNC));
        SolrResponse response = new OverseerSolrResponse(r);
        rsp.getValues().addAll(response.getResponse());
        return response;
    }
    QueueEvent event = coreContainer.getZkController().getOverseerCollectionQueue().offer(Utils.toJSON(m), timeout);
    if (event.getBytes() != null) {
        SolrResponse response = SolrResponse.deserialize(event.getBytes());
        rsp.getValues().addAll(response.getResponse());
        SimpleOrderedMap exp = (SimpleOrderedMap) response.getResponse().get("exception");
        if (exp != null) {
            Integer code = (Integer) exp.get("rspCode");
            rsp.setException(new SolrException(code != null && code != -1 ? ErrorCode.getErrorCode(code) : ErrorCode.SERVER_ERROR, (String) exp.get("msg")));
        }
        return response;
    } else {
        if (System.nanoTime() - time >= TimeUnit.NANOSECONDS.convert(timeout, TimeUnit.MILLISECONDS)) {
            throw new SolrException(ErrorCode.SERVER_ERROR, operation + " the collection time out:" + timeout / 1000 + "s");
        } else if (event.getWatchedEvent() != null) {
            throw new SolrException(ErrorCode.SERVER_ERROR, operation + " the collection error [Watcher fired on path: " + event.getWatchedEvent().getPath() + " state: " + event.getWatchedEvent().getState() + " type " + event.getWatchedEvent().getType() + "]");
        } else {
            throw new SolrException(ErrorCode.SERVER_ERROR, operation + " the collection unknown case");
        }
    }
}
Also used : OverseerSolrResponse(org.apache.solr.cloud.OverseerSolrResponse) NamedList(org.apache.solr.common.util.NamedList) QueueEvent(org.apache.solr.cloud.OverseerTaskQueue.QueueEvent) StrUtils.formatString(org.apache.solr.common.util.StrUtils.formatString) SolrResponse(org.apache.solr.client.solrj.SolrResponse) OverseerSolrResponse(org.apache.solr.cloud.OverseerSolrResponse) SimpleOrderedMap(org.apache.solr.common.util.SimpleOrderedMap) SolrException(org.apache.solr.common.SolrException)

Example 40 with NamedList

use of org.apache.solr.common.util.NamedList in project lucene-solr by apache.

the class ReplicationHandler method getReplicationDetails.

/**
   * Used for showing statistics and progress information.
   */
private NamedList<Object> getReplicationDetails(boolean showSlaveDetails) {
    NamedList<Object> details = new SimpleOrderedMap<>();
    NamedList<Object> master = new SimpleOrderedMap<>();
    NamedList<Object> slave = new SimpleOrderedMap<>();
    details.add("indexSize", NumberUtils.readableSize(core.getIndexSize()));
    details.add("indexPath", core.getIndexDir());
    details.add(CMD_SHOW_COMMITS, getCommits());
    details.add("isMaster", String.valueOf(isMaster));
    details.add("isSlave", String.valueOf(isSlave));
    CommitVersionInfo vInfo = getIndexVersion();
    details.add("indexVersion", null == vInfo ? 0 : vInfo.version);
    details.add(GENERATION, null == vInfo ? 0 : vInfo.generation);
    // make a copy so it won't change
    IndexCommit commit = indexCommitPoint;
    if (isMaster) {
        if (includeConfFiles != null)
            master.add(CONF_FILES, includeConfFiles);
        master.add(REPLICATE_AFTER, getReplicateAfterStrings());
        master.add("replicationEnabled", String.valueOf(replicationEnabled.get()));
    }
    if (isMaster && commit != null) {
        CommitVersionInfo repCommitInfo = CommitVersionInfo.build(commit);
        master.add("replicableVersion", repCommitInfo.version);
        master.add("replicableGeneration", repCommitInfo.generation);
    }
    IndexFetcher fetcher = currentIndexFetcher;
    if (fetcher != null) {
        Properties props = loadReplicationProperties();
        if (showSlaveDetails) {
            try {
                NamedList nl = fetcher.getDetails();
                slave.add("masterDetails", nl.get(CMD_DETAILS));
            } catch (Exception e) {
                LOG.warn("Exception while invoking 'details' method for replication on master ", e);
                slave.add(ERR_STATUS, "invalid_master");
            }
        }
        slave.add(MASTER_URL, fetcher.getMasterUrl());
        if (getPollInterval() != null) {
            slave.add(POLL_INTERVAL, getPollInterval());
        }
        Date nextScheduled = getNextScheduledExecTime();
        if (nextScheduled != null && !isPollingDisabled()) {
            slave.add(NEXT_EXECUTION_AT, nextScheduled.toString());
        } else if (isPollingDisabled()) {
            slave.add(NEXT_EXECUTION_AT, "Polling disabled");
        }
        addVal(slave, IndexFetcher.INDEX_REPLICATED_AT, props, Date.class);
        addVal(slave, IndexFetcher.INDEX_REPLICATED_AT_LIST, props, List.class);
        addVal(slave, IndexFetcher.REPLICATION_FAILED_AT_LIST, props, List.class);
        addVal(slave, IndexFetcher.TIMES_INDEX_REPLICATED, props, Integer.class);
        addVal(slave, IndexFetcher.CONF_FILES_REPLICATED, props, Integer.class);
        addVal(slave, IndexFetcher.TIMES_CONFIG_REPLICATED, props, Integer.class);
        addVal(slave, IndexFetcher.CONF_FILES_REPLICATED_AT, props, Integer.class);
        addVal(slave, IndexFetcher.LAST_CYCLE_BYTES_DOWNLOADED, props, Long.class);
        addVal(slave, IndexFetcher.TIMES_FAILED, props, Integer.class);
        addVal(slave, IndexFetcher.REPLICATION_FAILED_AT, props, Date.class);
        addVal(slave, IndexFetcher.PREVIOUS_CYCLE_TIME_TAKEN, props, Long.class);
        slave.add("currentDate", new Date().toString());
        slave.add("isPollingDisabled", String.valueOf(isPollingDisabled()));
        boolean isReplicating = isReplicating();
        slave.add("isReplicating", String.valueOf(isReplicating));
        if (isReplicating) {
            try {
                long bytesToDownload = 0;
                List<String> filesToDownload = new ArrayList<>();
                for (Map<String, Object> file : fetcher.getFilesToDownload()) {
                    filesToDownload.add((String) file.get(NAME));
                    bytesToDownload += (Long) file.get(SIZE);
                }
                //get list of conf files to download
                for (Map<String, Object> file : fetcher.getConfFilesToDownload()) {
                    filesToDownload.add((String) file.get(NAME));
                    bytesToDownload += (Long) file.get(SIZE);
                }
                slave.add("filesToDownload", filesToDownload);
                slave.add("numFilesToDownload", String.valueOf(filesToDownload.size()));
                slave.add("bytesToDownload", NumberUtils.readableSize(bytesToDownload));
                long bytesDownloaded = 0;
                List<String> filesDownloaded = new ArrayList<>();
                for (Map<String, Object> file : fetcher.getFilesDownloaded()) {
                    filesDownloaded.add((String) file.get(NAME));
                    bytesDownloaded += (Long) file.get(SIZE);
                }
                //get list of conf files downloaded
                for (Map<String, Object> file : fetcher.getConfFilesDownloaded()) {
                    filesDownloaded.add((String) file.get(NAME));
                    bytesDownloaded += (Long) file.get(SIZE);
                }
                Map<String, Object> currentFile = fetcher.getCurrentFile();
                String currFile = null;
                long currFileSize = 0, currFileSizeDownloaded = 0;
                float percentDownloaded = 0;
                if (currentFile != null) {
                    currFile = (String) currentFile.get(NAME);
                    currFileSize = (Long) currentFile.get(SIZE);
                    if (currentFile.containsKey("bytesDownloaded")) {
                        currFileSizeDownloaded = (Long) currentFile.get("bytesDownloaded");
                        bytesDownloaded += currFileSizeDownloaded;
                        if (currFileSize > 0)
                            percentDownloaded = (currFileSizeDownloaded * 100) / currFileSize;
                    }
                }
                slave.add("filesDownloaded", filesDownloaded);
                slave.add("numFilesDownloaded", String.valueOf(filesDownloaded.size()));
                long estimatedTimeRemaining = 0;
                Date replicationStartTimeStamp = fetcher.getReplicationStartTimeStamp();
                if (replicationStartTimeStamp != null) {
                    slave.add("replicationStartTime", replicationStartTimeStamp.toString());
                }
                long elapsed = fetcher.getReplicationTimeElapsed();
                slave.add("timeElapsed", String.valueOf(elapsed) + "s");
                if (bytesDownloaded > 0)
                    estimatedTimeRemaining = ((bytesToDownload - bytesDownloaded) * elapsed) / bytesDownloaded;
                float totalPercent = 0;
                long downloadSpeed = 0;
                if (bytesToDownload > 0)
                    totalPercent = (bytesDownloaded * 100) / bytesToDownload;
                if (elapsed > 0)
                    downloadSpeed = (bytesDownloaded / elapsed);
                if (currFile != null)
                    slave.add("currentFile", currFile);
                slave.add("currentFileSize", NumberUtils.readableSize(currFileSize));
                slave.add("currentFileSizeDownloaded", NumberUtils.readableSize(currFileSizeDownloaded));
                slave.add("currentFileSizePercent", String.valueOf(percentDownloaded));
                slave.add("bytesDownloaded", NumberUtils.readableSize(bytesDownloaded));
                slave.add("totalPercent", String.valueOf(totalPercent));
                slave.add("timeRemaining", String.valueOf(estimatedTimeRemaining) + "s");
                slave.add("downloadSpeed", NumberUtils.readableSize(downloadSpeed));
            } catch (Exception e) {
                LOG.error("Exception while writing replication details: ", e);
            }
        }
    }
    if (isMaster)
        details.add("master", master);
    if (slave.size() > 0)
        details.add("slave", slave);
    NamedList snapshotStats = snapShootDetails;
    if (snapshotStats != null)
        details.add(CMD_BACKUP, snapshotStats);
    return details;
}
Also used : NamedList(org.apache.solr.common.util.NamedList) ArrayList(java.util.ArrayList) Properties(java.util.Properties) SimpleOrderedMap(org.apache.solr.common.util.SimpleOrderedMap) 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) Date(java.util.Date)

Aggregations

NamedList (org.apache.solr.common.util.NamedList)440 Test (org.junit.Test)125 ArrayList (java.util.ArrayList)111 Map (java.util.Map)83 ModifiableSolrParams (org.apache.solr.common.params.ModifiableSolrParams)83 SolrException (org.apache.solr.common.SolrException)80 SimpleOrderedMap (org.apache.solr.common.util.SimpleOrderedMap)79 List (java.util.List)76 HashMap (java.util.HashMap)65 SolrQueryResponse (org.apache.solr.response.SolrQueryResponse)55 IOException (java.io.IOException)53 SolrDocumentList (org.apache.solr.common.SolrDocumentList)45 QueryRequest (org.apache.solr.client.solrj.request.QueryRequest)35 SolrQueryRequest (org.apache.solr.request.SolrQueryRequest)35 SolrParams (org.apache.solr.common.params.SolrParams)31 LocalSolrQueryRequest (org.apache.solr.request.LocalSolrQueryRequest)31 QueryResponse (org.apache.solr.client.solrj.response.QueryResponse)30 SolrCore (org.apache.solr.core.SolrCore)30 HttpSolrClient (org.apache.solr.client.solrj.impl.HttpSolrClient)27 SolrIndexSearcher (org.apache.solr.search.SolrIndexSearcher)27