@Override public void completed(Set<Checksum> checksums) { Throwable error = null; try { if (checksumModule.hasPolicy(ChecksumModule.PolicyFlag.GET_CRC_FROM_HSM)) { LOGGER.info( "Obtained checksums {} for {} from HSM", checksums, getFileAttributes().getPnfsId()); descriptor.addChecksums(checksums); } checksumModule.enforcePostRestorePolicy(descriptor); descriptor.commit(); LOGGER.info("Staged {} from nearline storage.", getFileAttributes().getPnfsId()); } catch (InterruptedException | CacheException | RuntimeException | Error e) { error = e; } catch (NoSuchAlgorithmException e) { error = new CacheException(1010, "Checksum calculation failed: " + e.getMessage(), e); } catch (IOException e) { error = new DiskErrorCacheException( "Checksum calculation failed due to I/O error: " + e.getMessage(), e); } finally { done(error); } }