Example usage for org.apache.solr.common.params CoreAdminParams CORE

List of usage examples for org.apache.solr.common.params CoreAdminParams CORE

Introduction

In this page you can find the example usage for org.apache.solr.common.params CoreAdminParams CORE.

Prototype

String CORE

To view the source code for org.apache.solr.common.params CoreAdminParams CORE.

Click Source Link

Document

What Core are we talking about

Usage

From source file:jp.aegif.nemaki.NemakiCoreAdminHandler.java

License:Open Source License

/**
 * Switch actions on REST API/*from w  w w. j ava  2  s  . c  o m*/
 *
 * Boolean return value is used as "doPersist" parameter,
 * which relate to the persistence of action results to the core.
 */
@Override
protected void handleCustomAction(SolrQueryRequest req, SolrQueryResponse rsp) {

    SolrParams params = req.getParams();

    // Get Server & Tracker info
    String indexCoreName = params.get(CoreAdminParams.CORE);
    String tokenCoreName = "token";

    SolrServer indexServer = new EmbeddedSolrServer(coreContainer, indexCoreName);
    SolrServer tokenServer = new EmbeddedSolrServer(coreContainer, tokenCoreName);
    SolrCore core = getCoreContainer().getCore(indexCoreName);
    CoreTracker tracker = new CoreTracker(this, core, indexServer, tokenServer);

    // Stop cron when executing action
    try {
        if (scheduler != null)
            scheduler.standby();
    } catch (SchedulerException e) {
        logger.error("Stop cron when executing action error:", e);
    }

    // Action
    doAction(rsp, tracker, params);

    // Restart cron
    try {
        if (scheduler != null)
            scheduler.start();
    } catch (SchedulerException e) {
        logger.error("Restart cron error:", e);
    }

}

From source file:org.alfresco.solr.AlfrescoCoreAdminHandler.java

License:Open Source License

protected void handleCustomAction(SolrQueryRequest req, SolrQueryResponse rsp) {
    LOGGER.info("######## Handle Custom Action ###########");
    SolrParams params = req.getParams();
    String cname = params.get(CoreAdminParams.CORE);
    String action = params.get(CoreAdminParams.ACTION);
    action = action == null ? "" : action.toUpperCase();
    try {/*from ww  w  . j a v  a  2s.  c o m*/
        switch (action) {
        case "NEWCORE":
            newCore(req, rsp);
            break;
        case "UPDATECORE":
            updateCore(req, rsp);
            break;
        case "UPDATESHARED":
            updateShared(req, rsp);
            break;
        case "REMOVECORE":
            removeCore(req, rsp);
            break;
        case "NEWDEFAULTINDEX":
            newDefaultCore(req, rsp);
            break;
        case "CHECK":
            actionCHECK(cname);
            break;
        case "NODEREPORT":
            actionNODEREPORTS(rsp, params, cname);
            break;
        case "ACLREPORT":
            actionACLREPORT(rsp, params, cname);
            break;
        case "TXREPORT":
            actionTXREPORT(rsp, params, cname);
            break;
        case "ACLTXREPORT":
            actionACLTXREPORT(rsp, params, cname);
            break;
        case "RANGECHECK":
            rangeCheck(rsp, cname);
            break;
        case "EXPAND":
            expand(rsp, params, cname);
            break;
        case "REPORT":
            actionREPORT(rsp, params, cname);
            break;
        case "PURGE":
            if (cname != null) {
                actionPURGE(params, cname);
            } else {
                for (String coreName : getTrackerRegistry().getCoreNames()) {
                    actionPURGE(params, coreName);
                }
            }
            break;
        case "REINDEX":
            if (cname != null) {
                actionREINDEX(params, cname);
            } else {
                for (String coreName : getTrackerRegistry().getCoreNames()) {
                    actionREINDEX(params, coreName);
                }
            }
            break;
        case "RETRY":
            if (cname != null) {
                actionRETRY(rsp, cname);
            } else {
                for (String coreName : getTrackerRegistry().getCoreNames()) {
                    actionRETRY(rsp, coreName);
                }
            }
            break;
        case "INDEX":
            if (cname != null) {
                actionINDEX(params, cname);
            } else {
                for (String coreName : getTrackerRegistry().getCoreNames()) {
                    actionINDEX(params, coreName);
                }
            }
            break;
        case "FIX":
            if (cname != null) {
                actionFIX(cname);
            } else {
                for (String coreName : getTrackerRegistry().getCoreNames()) {
                    actionFIX(coreName);
                }
            }
            break;
        case "SUMMARY":
            if (cname != null) {
                NamedList<Object> report = new SimpleOrderedMap<Object>();
                actionSUMMARY(params, report, cname);
                rsp.add("Summary", report);
            } else {
                NamedList<Object> report = new SimpleOrderedMap<Object>();
                for (String coreName : getTrackerRegistry().getCoreNames()) {
                    actionSUMMARY(params, report, coreName);
                }
                rsp.add("Summary", report);
            }
            break;
        case "LOG4J":
            String resource = "log4j-solr.properties";
            if (params.get("resource") != null) {
                resource = params.get("resource");
            }
            initResourceBasedLogging(resource);
            break;
        default:
            super.handleCustomAction(req, rsp);
            break;
        }
    } catch (Exception ex) {
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "Error executing implementation of admin request " + action, ex);
    }
}

From source file:org.alfresco.solr.AlfrescoCoreAdminHandlerTest.java

License:Open Source License

/** Check that a transaction report can be generated. */
@Test//from w  ww.  j ava  2  s  .co  m
public void handleCustomActionTXReportSuccess() throws Exception {
    // Set up the parameters being passed in.
    when(params.get(CoreAdminParams.ACTION)).thenReturn(TXREPORT);
    when(params.get(CoreAdminParams.CORE)).thenReturn(CORE_NAME);
    when(params.get(ARG_TXID)).thenReturn(TX_ID);
    // Set up the mock ACL tracker.
    when(trackerRegistry.getTrackerForCore(CORE_NAME, AclTracker.class)).thenReturn(aclTracker);
    when(aclTracker.checkIndex(Long.valueOf(TX_ID), 0L, null, null)).thenReturn(indexHealthReport);
    when(indexHealthReport.getDuplicatedAclTxInIndex()).thenReturn(iOpenBitSet);
    when(indexHealthReport.getAclTxInIndexButNotInDb()).thenReturn(iOpenBitSet);
    when(indexHealthReport.getMissingAclTxFromIndex()).thenReturn(iOpenBitSet);
    when(aclTracker.getTrackerState()).thenReturn(trackerState);
    // Set up the mock metadata tracker.
    when(trackerRegistry.getTrackerForCore(CORE_NAME, MetadataTracker.class)).thenReturn(metadataTracker);
    when(metadataTracker.checkIndex(Long.valueOf(TX_ID), 0L, null, null)).thenReturn(metaReport);
    when(metaReport.getDuplicatedTxInIndex()).thenReturn(iOpenBitSet);
    when(metaReport.getTxInIndexButNotInDb()).thenReturn(iOpenBitSet);
    when(metaReport.getMissingTxFromIndex()).thenReturn(iOpenBitSet);
    when(metaReport.getDuplicatedLeafInIndex()).thenReturn(iOpenBitSet);
    when(metaReport.getDuplicatedErrorInIndex()).thenReturn(iOpenBitSet);
    when(metaReport.getDuplicatedUnindexedInIndex()).thenReturn(iOpenBitSet);
    when(metadataTracker.getTrackerState()).thenReturn(trackerState);

    // Call the method under test.
    alfrescoCoreAdminHandler.handleCustomAction(req, rsp);

    // Check that a report was generated (don't look at the contents of the report though).
    verify(rsp).add(eq("report"), any(NamedList.class));
}

From source file:org.alfresco.solr.AlfrescoCoreAdminHandlerTest.java

License:Open Source License

/** Check that when the core name is missing we get an exception. */
@Test(expected = SolrException.class)
public void handleCustomActionTXReportMissingCoreName() {
    when(params.get(CoreAdminParams.ACTION)).thenReturn(TXREPORT);
    when(params.get(CoreAdminParams.CORE)).thenReturn(null);
    when(params.get(ARG_TXID)).thenReturn(TX_ID);

    alfrescoCoreAdminHandler.handleCustomAction(req, rsp);

    verify(rsp, never()).add(anyString(), any());
}

From source file:org.alfresco.solr.AlfrescoSolrUtils.java

License:Open Source License

/**
 * Asserts that the input {@link ShardState} and the CoreAdmin.SUMMARY response give the same information.
 *
 * @param state the {@link ShardState} instance.
 * @param core the target {@link SolrCore} instance.
 *///from  w w  w . ja  v a2s.co  m
public static void assertShardAndCoreSummaryConsistency(ShardState state, SolrCore core) {
    SolrParams params = new ModifiableSolrParams().add(CoreAdminParams.CORE, core.getName())
            .add(CoreAdminParams.ACTION, "SUMMARY");

    SolrQueryRequest request = new LocalSolrQueryRequest(core, params);
    SolrQueryResponse response = new SolrQueryResponse();
    coreAdminHandler(core).handleRequest(request, response);

    NamedList<?> summary = ofNullable(response.getValues()).map(values -> values.get("Summary"))
            .map(NamedList.class::cast).map(values -> values.get(core.getName())).map(NamedList.class::cast)
            .orElseGet(NamedList::new);

    assertEquals(state.getLastIndexedChangeSetId(), summary.get("Id for last Change Set in index"));
    assertEquals(state.getLastIndexedChangeSetCommitTime(), summary.get("Last Index Change Set Commit Time"));
    assertEquals(state.getLastIndexedTxCommitTime(), summary.get("Last Index TX Commit Time"));
    assertEquals(state.getLastIndexedTxId(), summary.get("Id for last TX in index"));
}

From source file:org.apache.sentry.binding.solr.authz.SolrAuthzUtil.java

License:Apache License

/**
 * This method extracts the {@linkplain org.apache.sentry.core.model.solr.Collection} entities
 * associated with this admin request and return a mapping of entity_name -> expected_auth_action.
 * This is used by Solr/Sentry authorization plugin to further restrict Solr admin operations.
 *///from  ww w . j  a  va 2 s  . c o m
static Map<String, SolrModelAction> getCoresForAdminOp(AuthorizationContext ctx) {
    String actionName = ctx.getParams().get(CoreAdminParams.ACTION);
    CoreAdminAction action = CoreAdminAction.get(actionName);
    if (action != null) {
        switch (action) {
        case REQUESTBUFFERUPDATES:
        case REQUESTAPPLYUPDATES:
        case CREATE: {
            String coreName = ctx.getParams().get(CoreAdminParams.NAME);
            return (coreName != null) ? Collections.singletonMap(coreName, SolrModelAction.UPDATE)
                    : Collections.emptyMap();
        }

        case REQUESTSTATUS:
        case OVERSEEROP:
        case INVOKE:
            // TODO - is this correct ?
        case DELETEALIAS: {
            return Collections.emptyMap();
        }

        case REQUESTSYNCSHARD:
        case REJOINLEADERELECTION:
        case PREPRECOVERY:
        case FORCEPREPAREFORLEADERSHIP:
        case CREATESNAPSHOT:
        case DELETESNAPSHOT:
        case RESTORECORE:
        case REQUESTRECOVERY:
        case SPLIT:
        case MERGEINDEXES:
        case UNLOAD:
        case RENAME:
        case RELOAD: {
            String coreName = ctx.getParams().get(CoreAdminParams.CORE);
            return (coreName != null) ? Collections.singletonMap(coreName, SolrModelAction.UPDATE)
                    : Collections.emptyMap();
        }

        case LISTSNAPSHOTS:
        case BACKUPCORE:
        case STATUS: {
            String coreName = ctx.getParams().get(CoreAdminParams.CORE);
            return (coreName != null) ? Collections.singletonMap(coreName, SolrModelAction.QUERY)
                    : Collections.emptyMap();
        }
        case SWAP: {
            Map<String, SolrModelAction> result = new HashMap<>();
            String core1 = ctx.getParams().get(CoreAdminParams.CORE);
            String core2 = ctx.getParams().get("other");
            if (core1 != null) {
                result.put(core1, SolrModelAction.UPDATE);
            }
            if (core2 != null) {
                result.put(core2, SolrModelAction.UPDATE);
            }
            return result;
        }
        }
    }

    return Collections.emptyMap();
}