private List<String> getForestNames(Collection<Forest> forests) { return forests.stream().map((forest)->forest.getForestName()).collect(Collectors.toList()); }
private void retry(QueryEvent queryEvent, boolean callFailListeners) { if ( isStopped() == true ) { logger.warn("Job is now stopped, aborting the retry"); return; } Forest retryForest = null; for ( Forest forest : getForestConfig().listForests() ) { if ( forest.equals(queryEvent.getForest()) ) { // while forest and queryEvent.getForest() have equivalent forest id, // we expect forest to have the currently available host info retryForest = forest; break; } } if ( retryForest == null ) { throw new IllegalStateException("Forest for queryEvent (" + queryEvent.getForest().getForestName() + ") is not in current getForestConfig()"); } // we're obviously not done with this forest forestIsDone.get(retryForest).set(false); retryForestMap.get(retryForest).incrementAndGet(); long start = queryEvent.getForestResultsSoFar() + 1; logger.trace("retryForest {} on retryHost {} at start {}", retryForest.getForestName(), retryForest.getPreferredHost(), start); QueryTask runnable = new QueryTask(getMoveMgr(), this, retryForest, query, queryEvent.getForestBatchNumber(), start, queryEvent.getJobBatchNumber(), callFailListeners); runnable.run(); } /*
if ( isDone.get() == true ) { logger.error("Attempt to query forest '{}' forestBatchNum {} with start {} after the last batch " + "for that forest has already been retrieved", forest.getForestName(), forestBatchNum, start); return; forest.getForestName(), forestBatchNum, start); return; try ( UrisHandle results = queryMgr.uris(query, handle, start, null, forest.getForestName()) ) { batch.getJobBatchNumber(), batch.getJobResultsSoFar(), forest.getForestName());
forest.getForestName(), forest.getForestId(), forest.isUpdateable(), false); }).toArray(Forest[]::new); forest.getForestName(), forest.getForestId(), forest.isUpdateable(), false); } else { return forest; forest.getForestName(), forest.getForestId(), forest.isUpdateable(), false); } else { return forest;
/** * This implements the QueryFailureListener interface * * @param queryBatch the exception with information about the failed query attempt */ public void processFailure(QueryBatchException queryBatch) { boolean isHostUnavailableException = processException(queryBatch.getBatcher(), queryBatch, queryBatch.getClient().getHost()); if ( isHostUnavailableException == true ) { try { logger.warn("Retrying failed batch: {}, results so far: {}, forest: {}, forestBatch: {}, forest results so far: {}", queryBatch.getJobBatchNumber(), queryBatch.getJobResultsSoFar(), queryBatch.getForest().getForestName(), queryBatch.getForestBatchNumber(), queryBatch.getForestResultsSoFar()); queryBatch.getBatcher().retryWithFailureListeners(queryBatch); } catch (RuntimeException e) { logger.error("Exception during retry", e); processFailure(new QueryBatchException(queryBatch, e)); } } }
@Test public void testArgs() throws Exception { if (moveMgr.getConnectionType() == DatabaseClient.ConnectionType.GATEWAY) return; int defaultPort = client.getPort(); Class<?> defaultAuthContext = client.getSecurityContext().getClass(); ForestConfiguration forestConfig = moveMgr.readForestConfig(); Forest[] forests = forestConfig.listForests(); String defaultDatabase = forests[0].getDatabaseName(); // expect three forests per node assertTrue(forests.length % 3 == 0); for ( Forest forest : forests ) { DatabaseClient forestClient = ((DataMovementManagerImpl) moveMgr).getForestClient(forest); // not all forests for a database are on the same host, so all we // can check is that the hostname is not null assertNotNull(forest.getHost()); // not all hosts have the original REST server, but all hosts have the uber port assertEquals(defaultPort, forestClient.getPort()); assertEquals(defaultDatabase, forest.getDatabaseName()); assertEquals(defaultAuthContext, forestClient.getSecurityContext().getClass()); assertEquals(true, forest.isUpdateable()); if ( forest.getForestName() == null || ! forest.getForestName().startsWith("java-unittest-") ) { fail("Unexpected forestName \"" + forest.getForestName() + "\""); } } } }
totalResults.addAndGet(batch.getItems().length); if(queryBatcherChecks) { String forestName = batch.getForest().getForestName();
.evalAs(String.class); logger.info("DEBUG: [LegalHoldsTest] urisToDelete =[" + urisToDelete + "]"); logger.debug("DEBUG: [LegalHoldsTest] batch.getForest().getForestName()=[" + batch.getForest().getForestName() + "]"); logger.info("DEBUG: [LegalHoldsTest] uri =[" + uri + "]"); synchronized (urisDeleted) { AtomicInteger deleted = urisDeleted.get(batch.getForest().getForestName()); if ( deleted == null ) { deleted = new AtomicInteger(); urisDeleted.put(batch.getForest().getForestName(), deleted);