use of io.airlift.units.DataSize in project presto by prestodb.
the class TestOrcDataSourceUtils method testMergeSingle.
@Test
public void testMergeSingle() {
List<DiskRange> diskRanges = mergeAdjacentDiskRanges(ImmutableList.of(new DiskRange(100, 100)), new DataSize(0, BYTE), new DataSize(0, BYTE));
assertEquals(diskRanges, ImmutableList.of(new DiskRange(100, 100)));
}
use of io.airlift.units.DataSize in project presto by prestodb.
the class TestOrcDataSourceUtils method testMergeAdjacent.
@Test
public void testMergeAdjacent() {
List<DiskRange> diskRanges = mergeAdjacentDiskRanges(ImmutableList.of(new DiskRange(100, 100), new DiskRange(200, 100), new DiskRange(300, 100)), new DataSize(0, BYTE), new DataSize(1, GIGABYTE));
assertEquals(diskRanges, ImmutableList.of(new DiskRange(100, 300)));
}
use of io.airlift.units.DataSize in project presto by prestodb.
the class ShardRecoveryManager method restoreFromBackup.
@VisibleForTesting
void restoreFromBackup(UUID shardUuid, OptionalLong shardSize) {
File storageFile = storageService.getStorageFile(shardUuid);
if (!backupStore.get().shardExists(shardUuid)) {
stats.incrementShardRecoveryBackupNotFound();
throw new PrestoException(RAPTOR_RECOVERY_ERROR, "No backup file found for shard: " + shardUuid);
}
if (storageFile.exists()) {
if (!shardSize.isPresent() || (storageFile.length() == shardSize.getAsLong())) {
return;
}
log.warn("Local shard file is corrupt. Deleting local file: %s", storageFile);
storageFile.delete();
}
// create a temporary file in the staging directory
File stagingFile = temporarySuffix(storageService.getStagingFile(shardUuid));
storageService.createParents(stagingFile);
// copy to temporary file
log.info("Copying shard %s from backup...", shardUuid);
long start = System.nanoTime();
try {
backupStore.get().restoreShard(shardUuid, stagingFile);
} catch (PrestoException e) {
stats.incrementShardRecoveryFailure();
stagingFile.delete();
throw e;
}
Duration duration = nanosSince(start);
DataSize size = succinctBytes(stagingFile.length());
DataSize rate = dataRate(size, duration).convertToMostSuccinctDataSize();
stats.addShardRecoveryDataRate(rate, size, duration);
log.info("Copied shard %s from backup in %s (%s at %s/s)", shardUuid, duration, size, rate);
// move to final location
storageService.createParents(storageFile);
try {
Files.move(stagingFile.toPath(), storageFile.toPath(), ATOMIC_MOVE);
} catch (FileAlreadyExistsException e) {
// someone else already created it (should not happen, but safe to ignore)
} catch (IOException e) {
stats.incrementShardRecoveryFailure();
throw new PrestoException(RAPTOR_RECOVERY_ERROR, "Failed to move shard: " + shardUuid, e);
} finally {
stagingFile.delete();
}
if (!storageFile.exists() || (shardSize.isPresent() && (storageFile.length() != shardSize.getAsLong()))) {
stats.incrementShardRecoveryFailure();
log.info("Files do not match after recovery. Deleting local file: " + shardUuid);
storageFile.delete();
throw new PrestoException(RAPTOR_RECOVERY_ERROR, "File not recovered correctly: " + shardUuid);
}
stats.incrementShardRecoverySuccess();
}
use of io.airlift.units.DataSize in project presto by prestodb.
the class BackupStats method addCopyShardDataRate.
public void addCopyShardDataRate(DataSize size, Duration duration) {
DataSize rate = dataRate(size, duration).convertToMostSuccinctDataSize();
copyToBackupBytesPerSecond.add(Math.round(rate.toBytes()));
copyToBackupShardSizeBytes.add(size.toBytes());
copyToBackupTimeInMilliSeconds.add(duration.toMillis());
}
use of io.airlift.units.DataSize in project presto by prestodb.
the class TestStorageManagerConfig method testExplicitPropertyMappings.
@Test
public void testExplicitPropertyMappings() {
Map<String, String> properties = new ImmutableMap.Builder<String, String>().put("storage.data-directory", "/data").put("storage.min-available-space", "123GB").put("storage.orc.max-merge-distance", "16kB").put("storage.orc.max-read-size", "16kB").put("storage.orc.stream-buffer-size", "16kB").put("storage.max-deletion-threads", "999").put("storage.shard-recovery-timeout", "1m").put("storage.missing-shard-discovery-interval", "4m").put("storage.compaction-enabled", "false").put("storage.compaction-interval", "4h").put("storage.organization-enabled", "false").put("storage.organization-interval", "4h").put("storage.ejector-interval", "9h").put("storage.max-recovery-threads", "12").put("storage.max-organization-threads", "12").put("storage.max-shard-rows", "10000").put("storage.max-shard-size", "10MB").put("storage.max-buffer-size", "512MB").put("storage.one-split-per-bucket-threshold", "4").build();
StorageManagerConfig expected = new StorageManagerConfig().setDataDirectory(new File("/data")).setMinAvailableSpace(new DataSize(123, GIGABYTE)).setOrcMaxMergeDistance(new DataSize(16, KILOBYTE)).setOrcMaxReadSize(new DataSize(16, KILOBYTE)).setOrcStreamBufferSize(new DataSize(16, KILOBYTE)).setDeletionThreads(999).setShardRecoveryTimeout(new Duration(1, MINUTES)).setMissingShardDiscoveryInterval(new Duration(4, MINUTES)).setCompactionEnabled(false).setCompactionInterval(new Duration(4, HOURS)).setOrganizationEnabled(false).setOrganizationInterval(new Duration(4, HOURS)).setShardEjectorInterval(new Duration(9, HOURS)).setRecoveryThreads(12).setOrganizationThreads(12).setMaxShardRows(10_000).setMaxShardSize(new DataSize(10, MEGABYTE)).setMaxBufferSize(new DataSize(512, MEGABYTE)).setOneSplitPerBucketThreshold(4);
assertFullMapping(properties, expected);
}
Aggregations