use of com.palantir.atlasdb.timelock.api.Namespace in project atlasdb by palantir.
the class CoordinationServiceRecorder method storeFastForwardState.
public void storeFastForwardState(CompletedBackup completedBackup) {
Namespace namespace = completedBackup.getNamespace();
Optional<InternalSchemaMetadataState> maybeMetadata = fetchSchemaMetadata(namespace, completedBackup.getBackupEndTimestamp());
maybeMetadata.ifPresentOrElse(metadata -> backupPersister.storeSchemaMetadata(namespace, metadata), () -> logEmptyMetadata(namespace));
}
use of com.palantir.atlasdb.timelock.api.Namespace in project atlasdb by palantir.
the class AtlasRestoreServiceTest method prepareBackupFailsIfDisableFails.
@Test
public void prepareBackupFailsIfDisableFails() {
DisableNamespacesResponse failedDisable = DisableNamespacesResponse.unsuccessful(UnsuccessfulDisableNamespacesResponse.of(ImmutableSet.of(WITH_BACKUP), ImmutableSet.of()));
DisableNamespacesRequest request = DisableNamespacesRequest.of(ImmutableSet.of(WITH_BACKUP), BACKUP_ID);
when(timeLockManagementService.disableTimelock(authHeader, request)).thenReturn(failedDisable);
Set<Namespace> disabledNamespaces = atlasRestoreService.prepareRestore(ImmutableSet.of(restoreRequest(WITH_BACKUP), restoreRequest(NO_BACKUP)), BACKUP_ID);
assertThat(disabledNamespaces).isEmpty();
}
use of com.palantir.atlasdb.timelock.api.Namespace in project atlasdb by palantir.
the class AtlasRestoreServiceTest method restoresToNewNamespaceCorrectly.
@Test
public void restoresToNewNamespaceCorrectly() {
RestoreRequest restoreRequest = RestoreRequest.builder().oldNamespace(WITH_BACKUP).newNamespace(NO_BACKUP).build();
// prepare
DisableNamespacesResponse successfulDisable = DisableNamespacesResponse.successful(SuccessfulDisableNamespacesResponse.of(BACKUP_ID));
DisableNamespacesRequest request = DisableNamespacesRequest.of(ImmutableSet.of(NO_BACKUP), BACKUP_ID);
when(timeLockManagementService.disableTimelock(authHeader, request)).thenReturn(successfulDisable);
Set<Namespace> disabledNamespaces = atlasRestoreService.prepareRestore(ImmutableSet.of(restoreRequest), BACKUP_ID);
assertThat(disabledNamespaces).containsExactly(NO_BACKUP);
// repair
BiConsumer<String, RangesForRepair> doNothingConsumer = (_unused1, _unused2) -> {
};
Set<Namespace> repairedNamespaces = atlasRestoreService.repairInternalTables(ImmutableSet.of(restoreRequest), doNothingConsumer);
assertThat(repairedNamespaces).containsExactly(NO_BACKUP);
verify(cassandraRepairHelper).repairInternalTables(NO_BACKUP, doNothingConsumer);
verify(cassandraRepairHelper).repairTransactionsTables(eq(NO_BACKUP), anyList(), eq(doNothingConsumer));
verify(cassandraRepairHelper).cleanTransactionsTables(eq(NO_BACKUP), eq(BACKUP_START_TIMESTAMP), anyList());
verifyNoMoreInteractions(cassandraRepairHelper);
// complete
CompletedBackup completedBackup = backupPersister.getCompletedBackup(WITH_BACKUP).orElseThrow();
CompleteRestoreRequest completeRestoreRequest = CompleteRestoreRequest.of(ImmutableMap.of(NO_BACKUP, completedBackup));
when(atlasRestoreClient.completeRestore(authHeader, completeRestoreRequest)).thenReturn(CompleteRestoreResponse.of(ImmutableSet.of(NO_BACKUP)));
ReenableNamespacesRequest reenableRequest = ReenableNamespacesRequest.of(ImmutableSet.of(NO_BACKUP), BACKUP_ID);
Set<Namespace> completedNamespaces = atlasRestoreService.completeRestore(ImmutableSet.of(restoreRequest), BACKUP_ID);
assertThat(completedNamespaces).containsExactly(NO_BACKUP);
verify(atlasRestoreClient).completeRestore(authHeader, completeRestoreRequest);
verify(timeLockManagementService).reenableTimelock(authHeader, reenableRequest);
}
use of com.palantir.atlasdb.timelock.api.Namespace in project atlasdb by palantir.
the class BackupAndRestoreEteTest method canPrepareAndCompleteRestore.
@Test
public void canPrepareAndCompleteRestore() {
addTodo();
backupResource.prepareBackup(NAMESPACES);
backupResource.completeBackup(NAMESPACES);
assertThat(timestampClient.getFreshTimestamp()).isGreaterThan(0L);
String backupId = "backupId";
RestoreRequest restoreRequest = RestoreRequest.builder().oldNamespace(NAMESPACE).newNamespace(NAMESPACE).build();
Set<Namespace> preparedNamespaces = backupResource.prepareRestore(RestoreRequestWithId.of(restoreRequest, backupId));
assertThat(preparedNamespaces).containsExactly(NAMESPACE);
// verify TimeLock is disabled
assertThatRemoteExceptionThrownBy(timestampClient::getFreshTimestamp).isGeneratedFromErrorType(ErrorType.INTERNAL);
Set<Namespace> completedNamespaces = backupResource.completeRestore(RestoreRequestWithId.of(restoreRequest, backupId));
assertThat(completedNamespaces).containsExactly(NAMESPACE);
// verify TimeLock is re-enabled
assertThat(timestampClient.getFreshTimestamp()).isGreaterThan(0L);
}
use of com.palantir.atlasdb.timelock.api.Namespace in project atlasdb by palantir.
the class ClusterMetadataUtils method getTableMetadata.
public static TableMetadata getTableMetadata(CqlMetadata metadata, Namespace namespace, String table) {
KeyspaceMetadata keyspaceMetadata = metadata.getKeyspaceMetadata(namespace);
Optional<TableMetadata> maybeTable = keyspaceMetadata.getTables().stream().filter(tableMetadata -> tableMetadata.getName().equals(table)).collect(MoreCollectors.toOptional());
return maybeTable.orElseThrow(() -> new SafeIllegalArgumentException("Can't find table", SafeArg.of("keyspace", namespace), LoggingArgs.tableRef("table", TableReference.fromString(table))));
}
Aggregations