Search in sources :

Example 1 with SRM_PARTIAL_SUCCESS

use of org.dcache.srm.v2_2.TStatusCode.SRM_PARTIAL_SUCCESS in project dcache by dCache.

the class SrmHandler method toGetRequestSummaryResponse.

private SrmGetRequestSummaryResponse toGetRequestSummaryResponse(Map<String, ListenableFuture<TRequestSummary>> futureMap) throws InterruptedException, CacheException, NoRouteToCellException {
    boolean hasFailure = false;
    boolean hasSuccess = false;
    List<TRequestSummary> summaries = new ArrayList<>();
    for (Map.Entry<String, ListenableFuture<TRequestSummary>> entry : futureMap.entrySet()) {
        try {
            summaries.add(entry.getValue().get());
            hasSuccess = true;
        } catch (ExecutionException e) {
            Throwable cause = e.getCause();
            if (cause instanceof SRMException) {
                summaries.add(createRequestSummaryFailure(entry.getKey(), ((SRMException) cause).getStatusCode(), cause.getMessage()));
                hasFailure = true;
            } else {
                Throwables.throwIfInstanceOf(cause, CacheException.class);
                Throwables.throwIfInstanceOf(cause, NoRouteToCellException.class);
                Throwables.throwIfUnchecked(e);
                throw new RuntimeException(e);
            }
        }
    }
    TReturnStatus status;
    if (!hasFailure) {
        status = new TReturnStatus(SRM_SUCCESS, "All request statuses have been retrieved.");
    } else if (hasSuccess) {
        status = new TReturnStatus(SRM_PARTIAL_SUCCESS, "Some request statuses have been retrieved.");
    } else {
        status = new TReturnStatus(SRM_FAILURE, "No request statuses have been retrieved.");
    }
    return new SrmGetRequestSummaryResponse(status, new ArrayOfTRequestSummary(summaries.toArray(TRequestSummary[]::new)));
}
Also used : TRequestSummary(org.dcache.srm.v2_2.TRequestSummary) ArrayOfTRequestSummary(org.dcache.srm.v2_2.ArrayOfTRequestSummary) ArrayOfTRequestSummary(org.dcache.srm.v2_2.ArrayOfTRequestSummary) CacheException(diskCacheV111.util.CacheException) PermissionDeniedCacheException(diskCacheV111.util.PermissionDeniedCacheException) TReturnStatus(org.dcache.srm.v2_2.TReturnStatus) ArrayList(java.util.ArrayList) SrmGetRequestSummaryResponse(org.dcache.srm.v2_2.SrmGetRequestSummaryResponse) ArrayOfString(org.dcache.srm.v2_2.ArrayOfString) SRMException(org.dcache.srm.SRMException) NoRouteToCellException(dmg.cells.nucleus.NoRouteToCellException) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) ExecutionException(java.util.concurrent.ExecutionException) Map(java.util.Map) Collectors.toMap(java.util.stream.Collectors.toMap) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap)

Aggregations

ImmutableMap (com.google.common.collect.ImmutableMap)1 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)1 CacheException (diskCacheV111.util.CacheException)1 PermissionDeniedCacheException (diskCacheV111.util.PermissionDeniedCacheException)1 NoRouteToCellException (dmg.cells.nucleus.NoRouteToCellException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 ExecutionException (java.util.concurrent.ExecutionException)1 Collectors.toMap (java.util.stream.Collectors.toMap)1 SRMException (org.dcache.srm.SRMException)1 ArrayOfString (org.dcache.srm.v2_2.ArrayOfString)1 ArrayOfTRequestSummary (org.dcache.srm.v2_2.ArrayOfTRequestSummary)1 SrmGetRequestSummaryResponse (org.dcache.srm.v2_2.SrmGetRequestSummaryResponse)1 TRequestSummary (org.dcache.srm.v2_2.TRequestSummary)1 TReturnStatus (org.dcache.srm.v2_2.TReturnStatus)1