private void rollBackAndPropagateException(Exception exception) { try { LOGGER.error(exception.getMessage(), exception); solrClient.rollback(); throw new RuntimeException(exception); } catch (IOException | SolrServerException e) { LOGGER.error(e.getMessage()); } }
public int index( Experiment experiment, Map<String, Map<BioentityPropertyName, Set<String>>> bioentityIdToProperties, int batchSize) { List<SolrInputDocument> toLoad = new ArrayList<>(batchSize); int addedIntoThisBatch = 0; int addedInTotal = 0; try (SolrInputDocumentInputStream solrInputDocumentInputStream = new SolrInputDocumentInputStream( experimentDataPointStreamFactory.stream(experiment), bioentityIdToProperties)) { Iterator<SolrInputDocument> it = new IterableObjectInputStream<>(solrInputDocumentInputStream).iterator(); while (it.hasNext()) { while (addedIntoThisBatch < batchSize && it.hasNext()) { SolrInputDocument analyticsInputDocument = it.next(); if (analyticsIndexDocumentValidator.validate(analyticsInputDocument)) { toLoad.add(analyticsInputDocument); addedIntoThisBatch++; } } if (addedIntoThisBatch > 0) { UpdateResponse r = solrClient.add(toLoad); LOGGER.info( "Sent {} documents for {}, qTime:{}", addedIntoThisBatch, experiment.getAccession(), r.getQTime()); addedInTotal += addedIntoThisBatch; addedIntoThisBatch = 0; toLoad = new ArrayList<>(batchSize); } } } catch (IOException | SolrServerException e) { LOGGER.error(e.getMessage(), e); } LOGGER.info("Finished: " + experiment.getAccession()); return addedInTotal; }