Search in sources :

Example 1 with TransactionsTableInteraction

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);
}
Also used : FullyBoundedTimestampRange(com.palantir.timestamp.FullyBoundedTimestampRange) AtlasService(com.palantir.atlasdb.backup.api.AtlasService) TransactionsTableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction)

Example 2 with TransactionsTableInteraction

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)));
}
Also used : InternalSchemaMetadataState(com.palantir.atlasdb.internalschema.InternalSchemaMetadataState) Transactions2TableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.Transactions2TableInteraction) Transactions1TableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.Transactions1TableInteraction) Range(com.google.common.collect.Range) FullyBoundedTimestampRange(com.palantir.timestamp.FullyBoundedTimestampRange) TransactionsTableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction) Test(org.junit.Test)

Example 3 with TransactionsTableInteraction

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);
}
Also used : LightweightOppToken(com.palantir.atlasdb.keyvalue.cassandra.LightweightOppToken) Map(java.util.Map) TransactionsTableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction) Transactions3TableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.Transactions3TableInteraction) Test(org.junit.Test)

Example 4 with TransactionsTableInteraction

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);
}
Also used : Transactions2TableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.Transactions2TableInteraction) LightweightOppToken(com.palantir.atlasdb.keyvalue.cassandra.LightweightOppToken) Map(java.util.Map) TransactionsTableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction) Test(org.junit.Test)

Example 5 with TransactionsTableInteraction

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);
}
Also used : Transactions2TableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.Transactions2TableInteraction) LightweightOppToken(com.palantir.atlasdb.keyvalue.cassandra.LightweightOppToken) Transactions1TableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.Transactions1TableInteraction) Map(java.util.Map) TransactionsTableInteraction(com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction) Test(org.junit.Test)

Aggregations

TransactionsTableInteraction (com.palantir.atlasdb.cassandra.backup.transaction.TransactionsTableInteraction)15 Test (org.junit.Test)14 LightweightOppToken (com.palantir.atlasdb.keyvalue.cassandra.LightweightOppToken)13 Map (java.util.Map)13 Transactions2TableInteraction (com.palantir.atlasdb.cassandra.backup.transaction.Transactions2TableInteraction)12 Transactions1TableInteraction (com.palantir.atlasdb.cassandra.backup.transaction.Transactions1TableInteraction)9 Range (com.google.common.collect.Range)6 AtlasService (com.palantir.atlasdb.backup.api.AtlasService)6 Transactions3TableInteraction (com.palantir.atlasdb.cassandra.backup.transaction.Transactions3TableInteraction)6 Cluster (com.datastax.driver.core.Cluster)5 DefaultRetryPolicy (com.datastax.driver.core.policies.DefaultRetryPolicy)5 ImmutableList (com.google.common.collect.ImmutableList)5 ImmutableMap (com.google.common.collect.ImmutableMap)5 ImmutableRangeSet.toImmutableRangeSet (com.google.common.collect.ImmutableRangeSet.toImmutableRangeSet)5 RangeMap (com.google.common.collect.RangeMap)5 RangeSet (com.google.common.collect.RangeSet)5 AtlasDbConstants (com.palantir.atlasdb.AtlasDbConstants)5 KvsRunner (com.palantir.atlasdb.backup.KvsRunner)5 ServiceId (com.palantir.atlasdb.backup.api.ServiceId)5 CassandraKeyValueServiceConfig (com.palantir.atlasdb.cassandra.CassandraKeyValueServiceConfig)5