use of com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction in project atlasdb by palantir.
the class AtlasRestoreService method repairTransactionsTables.
private void repairTransactionsTables(RestoreRequest restoreRequest, CompletedBackup completedBackup, BiConsumer<String, RangesForRepair> repairTable) {
Map<FullyBoundedTimestampRange, Integer> coordinationMap = getCoordinationMap(restoreRequest.oldAtlasService(), completedBackup);
List<TransactionsTableInteraction> transactionsTableInteractions = TransactionsTableInteraction.getTransactionTableInteractions(coordinationMap, DefaultRetryPolicy.INSTANCE);
AtlasService atlasService = restoreRequest.newAtlasService();
cassandraRepairHelper.repairTransactionsTables(atlasService, transactionsTableInteractions, repairTable);
cassandraRepairHelper.cleanTransactionsTables(atlasService, completedBackup.getBackupStartTimestamp(), transactionsTableInteractions);
}
use of com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction in project atlasdb by palantir.
the class CoordinationServiceUtilitiesTest method cleanMultipleRangesWithSchemasWithinBounds.
@Test
public void cleanMultipleRangesWithSchemasWithinBounds() {
final long migrateToTxns2 = IMMUTABLE_TIMESTAMP + FASTFORWARD_TIMESTAMP / 2;
Map<Range<Long>, Integer> rangesWithSchemas = ImmutableMap.of(Range.closedOpen(AtlasDbConstants.STARTING_TS, migrateToTxns2), 1, Range.atLeast(migrateToTxns2), 2);
final long coordServiceBound = FASTFORWARD_TIMESTAMP + 1000L;
Optional<InternalSchemaMetadataState> coordService = createCoordService(rangesWithSchemas, coordServiceBound);
List<TransactionsTableInteraction> txnInteractions = TransactionsTableInteraction.getTransactionTableInteractions(CoordinationServiceUtilities.getCoordinationMapOnRestore(coordService, FASTFORWARD_TIMESTAMP, IMMUTABLE_TIMESTAMP), POLICY);
assertThat(txnInteractions).hasSize(2);
TransactionsTableInteraction txn1 = txnInteractions.stream().filter(txn -> txn instanceof Transactions1TableInteraction).findFirst().get();
TransactionsTableInteraction txn2 = txnInteractions.stream().filter(txn -> txn instanceof Transactions2TableInteraction).findFirst().get();
assertThat(txn1).extracting(TransactionsTableInteraction::getTimestampRange).isEqualTo(FullyBoundedTimestampRange.of(Range.closedOpen(IMMUTABLE_TIMESTAMP, migrateToTxns2)));
assertThat(txn2).extracting(TransactionsTableInteraction::getTimestampRange).isEqualTo(FullyBoundedTimestampRange.of(Range.closed(migrateToTxns2, FASTFORWARD_TIMESTAMP)));
}
use of com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction in project atlasdb by palantir.
the class RepairRangeFetcherTest method testRepairTxn3.
@Test
public void testRepairTxn3() {
List<TransactionsTableInteraction> interactions = ImmutableList.of(new Transactions3TableInteraction(range(1L, 10_000_000L)));
Map<String, Map<InetSocketAddress, RangeSet<LightweightOppToken>>> rangesForRepair = repairRangeFetcher.getTransactionTableRangesForRepair(interactions);
// Transactions3 is backed by Transactions2 under the hood, so this is the table that will be repaired.
assertThat(rangesForRepair.keySet()).containsExactly(TXN_2);
}
use of com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction in project atlasdb by palantir.
the class RepairRangeFetcherTest method testRepairGivesAllReplicas.
@Test
public void testRepairGivesAllReplicas() {
List<TransactionsTableInteraction> interactions = ImmutableList.of(new Transactions2TableInteraction(range(1L, 10_000_000L), POLICY));
Map<String, Map<InetSocketAddress, RangeSet<LightweightOppToken>>> rangesForRepair = repairRangeFetcher.getTransactionTableRangesForRepair(interactions);
assertThat(rangesForRepair.get(TXN_2).keySet()).containsExactlyInAnyOrder(BackupTestUtils.HOST_1, BackupTestUtils.HOST_2, BackupTestUtils.HOST_3);
}
use of com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction in project atlasdb by palantir.
the class RepairRangeFetcherTest method testRepairBothTxnTables.
@Test
public void testRepairBothTxnTables() {
List<TransactionsTableInteraction> interactions = ImmutableList.of(new Transactions1TableInteraction(range(1L, 5L), POLICY), new Transactions2TableInteraction(range(6L, 10L), POLICY));
Map<String, Map<InetSocketAddress, RangeSet<LightweightOppToken>>> rangesForRepair = repairRangeFetcher.getTransactionTableRangesForRepair(interactions);
assertThat(rangesForRepair.keySet()).containsExactlyInAnyOrder(TXN_1, TXN_2);
}
Aggregations