private void setDefaultCollection(SolrClient solrClient) { String defaultCollection = null; if (solrClient instanceof CloudSolrClient) { defaultCollection = ((CloudSolrClient) solrClient).getDefaultCollection(); } this.collection = defaultCollection; }
/** * {@link SolrJsonMapper} builder class. * @param solrClient {@link SolrClient} implementation from where to extract the default Solr collection, if any defined. * @param jsonTupleField Name of the tuple field that contains the JSON object used to update the Solr index */ public Builder(SolrClient solrClient, String jsonTupleField) { String defaultCollection = null; if (solrClient instanceof CloudSolrClient) { defaultCollection = ((CloudSolrClient) solrClient).getDefaultCollection(); } this.collection = defaultCollection; this.jsonTupleField = jsonTupleField; }
if (server != null && CloudSolrClient.class.isAssignableFrom(server.getClass())) { CloudSolrClient cs = (CloudSolrClient) server; if (StringUtils.isBlank(cs.getDefaultCollection())) { cs.setDefaultCollection(getPrimaryName()); if (Objects.equals(cs.getDefaultCollection(), ((CloudSolrClient) reindexServer).getDefaultCollection())) { throw new IllegalStateException("Primary and Reindex servers cannot have the same defaultCollection: " + cs.getDefaultCollection());
if (server != null && CloudSolrClient.class.isAssignableFrom(server.getClass())) { CloudSolrClient cs = (CloudSolrClient) server; if (StringUtils.isBlank(cs.getDefaultCollection())) { cs.setDefaultCollection(getReindexName()); if (Objects.equals(cs.getDefaultCollection(), ((CloudSolrClient) primaryServer).getDefaultCollection())) { throw new IllegalStateException("Primary and Reindex servers cannot have the same defaultCollection: " + cs.getDefaultCollection());
@Override public String getDefaultCollection() { if (solrConfig != null && solrConfig.isSiteCollections()) { Site site = BroadleafRequestContext.getBroadleafRequestContext().getNonPersistentSite(); return (reindexClient) ? solrConfig.getSiteReindexAliasName(site) : solrConfig.getSiteAliasName(site); } return super.getDefaultCollection(); }
Aliases aliases = primaryCloudClient.getZkStateReader().getAliases(); Map<String, String> aliasCollectionMap = aliases.getCollectionAliasMap(); if (aliasCollectionMap == null || !aliasCollectionMap.containsKey(primaryCloudClient.getDefaultCollection()) || !aliasCollectionMap.containsKey(reindexCloudClient.getDefaultCollection())) { throw new IllegalStateException("Could not determine the PRIMARY or REINDEX " + "collection or collections from the Solr aliases."); String primaryCollectionName = aliasCollectionMap.get(primaryCloudClient.getDefaultCollection()); String reindexCollectionName = aliasCollectionMap.get(reindexCloudClient.getDefaultCollection()); new CollectionAdminRequest.CreateAlias().setAliasName(primaryCloudClient.getDefaultCollection()) .setAliasedCollections(reindexCollectionName).process(primaryCloudClient); new CollectionAdminRequest.CreateAlias().setAliasName(reindexCloudClient.getDefaultCollection()) .setAliasedCollections(primaryCollectionName).process(reindexCloudClient); } catch (Exception e) {
if (StringUtils.isEmpty(primary.getDefaultCollection())) { throw new IllegalStateException("The primary CloudSolrServer must have a defaultCollection property set."); } else { this.setPrimaryName(primary.getDefaultCollection()); if (StringUtils.isEmpty(reindex.getDefaultCollection())) { throw new IllegalStateException("The reindex CloudSolrServer must have a defaultCollection property set."); } else { this.setReindexName(reindex.getDefaultCollection()); if (Objects.equals(primary.getDefaultCollection(), reindex.getDefaultCollection())) { throw new IllegalStateException("The primary and reindex CloudSolrServers must have " + "unique defaultCollection properties. All other things like the " if (aliasCollectionMap == null || !aliasCollectionMap.containsKey(primary.getDefaultCollection())) { new CollectionAdminRequest.CreateAlias().setAliasName(primary.getDefaultCollection()) .setAliasedCollections(collectionName).process(primary); } else { String collectionName = aliasCollectionMap.get(primary.getDefaultCollection()); collectionName = collectionName.split(",")[0]; if (!collectionNames.contains(collectionName)) { if (aliasCollectionMap == null || !aliasCollectionMap.containsKey(reindex.getDefaultCollection())) { new CollectionAdminRequest.CreateAlias().setAliasName(reindex.getDefaultCollection()) .setAliasedCollections(collectionName).process(primary); } else {
private void setDefaultCollection(SolrClient solrClient) { String defaultCollection = null; if (solrClient instanceof CloudSolrClient) { defaultCollection = ((CloudSolrClient) solrClient).getDefaultCollection(); } this.collection = defaultCollection; }
/** * {@link SolrJsonMapper} builder class. * @param solrClient {@link SolrClient} implementation from where to extract the default Solr collection, if any defined. * @param jsonTupleField Name of the tuple field that contains the JSON object used to update the Solr index * This doesn't work in secure mode, in secure mode we need to pass the collection */ public Builder(SolrClient solrClient, String jsonTupleField) { String defaultCollection = null; if (solrClient instanceof CloudSolrClient) { defaultCollection = ((CloudSolrClient) solrClient).getDefaultCollection(); } this.collection = defaultCollection; this.jsonTupleField = jsonTupleField; }
protected int sendDocsWithRetry(List<SolrInputDocument> batch, int minRf, int maxRetries, int waitBeforeRetry) throws Exception { return sendDocsWithRetry(cloudClient, cloudClient.getDefaultCollection(), batch, minRf, maxRetries, waitBeforeRetry); }
@Override public NamedList<Object> request(SolrRequest request, String collection) throws SolrServerException, IOException { SolrParams reqParams = request.getParams(); if (collection == null) collection = (reqParams != null) ? reqParams.get("collection", getDefaultCollection()) : getDefaultCollection(); return requestWithRetryOnStaleState(request, 0, collection); } private static final Set<String> ADMIN_PATHS = new HashSet<>(Arrays.asList(
@SuppressWarnings("rawtypes") protected static int sendDocsWithRetry(CloudSolrClient cloudClient, String collection, List<SolrInputDocument> batch, int minRf, int maxRetries, int waitBeforeRetry) throws Exception { UpdateRequest up = new UpdateRequest(); up.add(batch); NamedList resp = null; int numRetries = 0; while(true) { try { resp = cloudClient.request(up, collection); return cloudClient.getMinAchievedReplicationFactor(cloudClient.getDefaultCollection(), resp); } catch (Exception exc) { Throwable rootCause = SolrException.getRootCause(exc); if (++numRetries <= maxRetries) { log.warn("ERROR: " + rootCause + " ... Sleeping for " + waitBeforeRetry + " seconds before re-try ..."); Thread.sleep(waitBeforeRetry * 1000L); } else { log.error("No more retries available! Add batch failed due to: " + rootCause); throw exc; } } } }