use of org.mycore.util.concurrent.MCRTransactionableRunnable in project mycore by MyCoRe-Org.
the class MCRSession method submitOnCommitTasks.
private void submitOnCommitTasks() {
Queue<Runnable> runnables = onCommitTasks.get();
onCommitTasks.remove();
CompletableFuture.allOf(runnables.stream().map(r -> new MCRTransactionableRunnable(r, this)).map(MCRSession::toCompletableFuture).toArray(CompletableFuture[]::new)).join();
}
use of org.mycore.util.concurrent.MCRTransactionableRunnable in project mycore by MyCoRe-Org.
the class MCROAISearchManager method getRecordListParallel.
private OAIDataList<Record> getRecordListParallel(MCROAISearcher searcher, MCROAIResult result) {
List<Header> headerList = result.list();
int listSize = headerList.size();
Record[] records = new Record[listSize];
@SuppressWarnings("rawtypes") CompletableFuture[] futures = new CompletableFuture[listSize];
MetadataFormat metadataFormat = searcher.getMetadataFormat();
MCRSession mcrSession = MCRSessionMgr.getCurrentSession();
for (int i = 0; i < listSize; i++) {
Header header = headerList.get(i);
int resultIndex = i;
MCRTransactionableRunnable r = new MCRTransactionableRunnable(() -> records[resultIndex] = this.objManager.getRecord(header, metadataFormat), mcrSession);
CompletableFuture<Void> future = CompletableFuture.runAsync(r, executorService);
futures[i] = future;
}
CompletableFuture.allOf(futures).join();
OAIDataList<Record> recordList = new OAIDataList<>();
recordList.addAll(Arrays.asList(records));
return recordList;
}
Aggregations