Search in sources :

Example 1 with MCRTransactionableRunnable

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();
}
Also used : MCRTransactionableRunnable(org.mycore.util.concurrent.MCRTransactionableRunnable) MCRTransactionableRunnable(org.mycore.util.concurrent.MCRTransactionableRunnable)

Example 2 with MCRTransactionableRunnable

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;
}
Also used : OAIDataList(org.mycore.oai.pmh.OAIDataList) CompletableFuture(java.util.concurrent.CompletableFuture) MetadataFormat(org.mycore.oai.pmh.MetadataFormat) MCRSession(org.mycore.common.MCRSession) Header(org.mycore.oai.pmh.Header) Record(org.mycore.oai.pmh.Record) MCRTransactionableRunnable(org.mycore.util.concurrent.MCRTransactionableRunnable)

Aggregations

MCRTransactionableRunnable (org.mycore.util.concurrent.MCRTransactionableRunnable)2 CompletableFuture (java.util.concurrent.CompletableFuture)1 MCRSession (org.mycore.common.MCRSession)1 Header (org.mycore.oai.pmh.Header)1 MetadataFormat (org.mycore.oai.pmh.MetadataFormat)1 OAIDataList (org.mycore.oai.pmh.OAIDataList)1 Record (org.mycore.oai.pmh.Record)1