@Override public SegmentArchiveManager createArchiveManager(boolean mmap, boolean offHeapAccess, IOMonitor ioMonitor, FileStoreMonitor fileStoreMonitor) { return new AzureArchiveManager(segmentstoreDirectory, ioMonitor, fileStoreMonitor); }
@Override public void copyFile(String from, String to) throws IOException { CloudBlobDirectory targetDirectory = getDirectory(to); getBlobs(from) .forEach(cloudBlob -> { try { copyBlob(cloudBlob, targetDirectory); } catch (IOException e) { log.error("Can't copy segment {}", cloudBlob.getUri().getPath(), e); } }); }
@Override public boolean renameTo(String from, String to) { try { CloudBlobDirectory targetDirectory = getDirectory(to); getBlobs(from) .forEach(cloudBlob -> { try { renameBlob(cloudBlob, targetDirectory); } catch (IOException e) { log.error("Can't rename segment {}", cloudBlob.getUri().getPath(), e); } }); return true; } catch (IOException e) { log.error("Can't rename archive {} to {}", from, to, e); return false; } }
@Override public SegmentArchiveReader forceOpen(String archiveName) throws IOException { CloudBlobDirectory archiveDirectory = getDirectory(archiveName); return new AzureSegmentArchiveReader(archiveDirectory, ioMonitor); }
private List<CloudBlob> getBlobList(String archiveName) throws IOException { return getBlobs(archiveName).collect(Collectors.toList()); }
private void renameBlob(CloudBlob blob, CloudBlobDirectory newParent) throws IOException { copyBlob(blob, newParent); try { blob.delete(); } catch (StorageException e) { throw new IOException(e); } }
List<RecoveredEntry> entryList = new ArrayList<>(); for (CloudBlob b : getBlobList(archiveName)) { String name = getName(b); Matcher m = pattern.matcher(name);
@Override public SegmentArchiveWriter create(String archiveName) throws IOException { return new AzureSegmentArchiveWriter(getDirectory(archiveName), ioMonitor, monitor); }
@Override public boolean exists(String archiveName) { try { return getBlobs(archiveName).findAny().isPresent(); } catch (IOException e) { log.error("Can't check the existence of {}", archiveName, e); return false; } }
private void renameBlob(CloudBlob blob, CloudBlobDirectory newParent) throws IOException { copyBlob(blob, newParent); try { blob.delete(); } catch (StorageException e) { throw new IOException(e); } }
List<RecoveredEntry> entryList = new ArrayList<>(); for (CloudBlob b : getBlobList(archiveName)) { String name = getName(b); Matcher m = pattern.matcher(name);
@Override public void copyFile(String from, String to) throws IOException { CloudBlobDirectory targetDirectory = getDirectory(to); getBlobs(from) .forEach(cloudBlob -> { try { copyBlob(cloudBlob, targetDirectory); } catch (IOException e) { log.error("Can't copy segment {}", cloudBlob.getUri().getPath(), e); } }); }
@Override public boolean renameTo(String from, String to) { try { CloudBlobDirectory targetDirectory = getDirectory(to); getBlobs(from) .forEach(cloudBlob -> { try { renameBlob(cloudBlob, targetDirectory); } catch (IOException e) { log.error("Can't rename segment {}", cloudBlob.getUri().getPath(), e); } }); return true; } catch (IOException e) { log.error("Can't rename archive {} to {}", from, to, e); return false; } }
@Override public SegmentArchiveWriter create(String archiveName) throws IOException { return new AzureSegmentArchiveWriter(getDirectory(archiveName), ioMonitor, monitor); }
@Override public boolean exists(String archiveName) { try { return getBlobs(archiveName).findAny().isPresent(); } catch (IOException e) { log.error("Can't check the existence of {}", archiveName, e); return false; } }
@Override public SegmentArchiveManager createArchiveManager(boolean mmap, boolean offHeapAccess, IOMonitor ioMonitor, FileStoreMonitor fileStoreMonitor) { return new AzureArchiveManager(segmentstoreDirectory, ioMonitor, fileStoreMonitor); }
@Override public SegmentArchiveReader forceOpen(String archiveName) throws IOException { CloudBlobDirectory archiveDirectory = getDirectory(archiveName); return new AzureSegmentArchiveReader(archiveDirectory, ioMonitor); }
private List<CloudBlob> getBlobList(String archiveName) throws IOException { return getBlobs(archiveName).collect(Collectors.toList()); }
private Stream<CloudBlob> getBlobs(String archiveName) throws IOException { return AzureUtilities.getBlobs(getDirectory(archiveName)); }
@Override public boolean delete(String archiveName) { try { getBlobs(archiveName) .forEach(cloudBlob -> { try { cloudBlob.delete(); } catch (StorageException e) { log.error("Can't delete segment {}", cloudBlob.getUri().getPath(), e); } }); return true; } catch (IOException e) { log.error("Can't delete archive {}", archiveName, e); return false; } }