List of usage examples for org.apache.solr.common.params CoreAdminParams CORE
String CORE
To view the source code for org.apache.solr.common.params CoreAdminParams CORE.
Click Source Link
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(); }