Search in sources :

Example 6 with LogTruncation

use of org.apache.kafka.clients.consumer.internals.SubscriptionState.LogTruncation in project kafka by apache.

the class SubscriptionStateTest method testMaybeCompleteValidation.

@Test
public void testMaybeCompleteValidation() {
    Node broker1 = new Node(1, "localhost", 9092);
    state.assignFromUser(Collections.singleton(tp0));
    int currentEpoch = 10;
    long initialOffset = 10L;
    int initialOffsetEpoch = 5;
    SubscriptionState.FetchPosition initialPosition = new SubscriptionState.FetchPosition(initialOffset, Optional.of(initialOffsetEpoch), new Metadata.LeaderAndEpoch(Optional.of(broker1), Optional.of(currentEpoch)));
    state.seekUnvalidated(tp0, initialPosition);
    assertTrue(state.awaitingValidation(tp0));
    Optional<LogTruncation> truncationOpt = state.maybeCompleteValidation(tp0, initialPosition, new EpochEndOffset().setLeaderEpoch(initialOffsetEpoch).setEndOffset(initialOffset + 5));
    assertEquals(Optional.empty(), truncationOpt);
    assertFalse(state.awaitingValidation(tp0));
    assertEquals(initialPosition, state.position(tp0));
}
Also used : EpochEndOffset(org.apache.kafka.common.message.OffsetForLeaderEpochResponseData.EpochEndOffset) Node(org.apache.kafka.common.Node) Metadata(org.apache.kafka.clients.Metadata) OffsetAndMetadata(org.apache.kafka.clients.consumer.OffsetAndMetadata) LogTruncation(org.apache.kafka.clients.consumer.internals.SubscriptionState.LogTruncation) Test(org.junit.jupiter.api.Test)

Example 7 with LogTruncation

use of org.apache.kafka.clients.consumer.internals.SubscriptionState.LogTruncation in project kafka by apache.

the class SubscriptionStateTest method testTruncationDetectionUnknownDivergentOffsetWithoutResetPolicy.

@Test
public void testTruncationDetectionUnknownDivergentOffsetWithoutResetPolicy() {
    Node broker1 = new Node(1, "localhost", 9092);
    state = new SubscriptionState(new LogContext(), OffsetResetStrategy.NONE);
    state.assignFromUser(Collections.singleton(tp0));
    int currentEpoch = 10;
    long initialOffset = 10L;
    int initialOffsetEpoch = 5;
    SubscriptionState.FetchPosition initialPosition = new SubscriptionState.FetchPosition(initialOffset, Optional.of(initialOffsetEpoch), new Metadata.LeaderAndEpoch(Optional.of(broker1), Optional.of(currentEpoch)));
    state.seekUnvalidated(tp0, initialPosition);
    assertTrue(state.awaitingValidation(tp0));
    Optional<LogTruncation> truncationOpt = state.maybeCompleteValidation(tp0, initialPosition, new EpochEndOffset().setLeaderEpoch(UNDEFINED_EPOCH).setEndOffset(UNDEFINED_EPOCH_OFFSET));
    assertTrue(truncationOpt.isPresent());
    LogTruncation truncation = truncationOpt.get();
    assertEquals(Optional.empty(), truncation.divergentOffsetOpt);
    assertEquals(initialPosition, truncation.fetchPosition);
    assertTrue(state.awaitingValidation(tp0));
}
Also used : EpochEndOffset(org.apache.kafka.common.message.OffsetForLeaderEpochResponseData.EpochEndOffset) Node(org.apache.kafka.common.Node) Metadata(org.apache.kafka.clients.Metadata) OffsetAndMetadata(org.apache.kafka.clients.consumer.OffsetAndMetadata) LogContext(org.apache.kafka.common.utils.LogContext) LogTruncation(org.apache.kafka.clients.consumer.internals.SubscriptionState.LogTruncation) Test(org.junit.jupiter.api.Test)

Aggregations

Metadata (org.apache.kafka.clients.Metadata)7 OffsetAndMetadata (org.apache.kafka.clients.consumer.OffsetAndMetadata)7 LogTruncation (org.apache.kafka.clients.consumer.internals.SubscriptionState.LogTruncation)7 Node (org.apache.kafka.common.Node)7 EpochEndOffset (org.apache.kafka.common.message.OffsetForLeaderEpochResponseData.EpochEndOffset)7 Test (org.junit.jupiter.api.Test)7 LogContext (org.apache.kafka.common.utils.LogContext)3