Search in sources :

Example 1 with ReaderGroupStateInit

use of io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit in project pravega by pravega.

the class ReaderGroupImpl method resetReadersToCheckpoint.

@SuppressWarnings("deprecation")
@Override
public void resetReadersToCheckpoint(Checkpoint checkpoint) {
    @Cleanup StateSynchronizer<ReaderGroupState> synchronizer = createSynchronizer();
    synchronizer.updateState(state -> {
        ReaderGroupConfig config = state.getConfig();
        Map<Segment, Long> positions = new HashMap<>();
        for (StreamCut cut : checkpoint.asImpl().getPositions().values()) {
            positions.putAll(cut.asImpl().getPositions());
        }
        return Collections.singletonList(new ReaderGroupStateInit(config, positions));
    });
}
Also used : ReaderGroupConfig(io.pravega.client.stream.ReaderGroupConfig) ReaderGroupStateInit(io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit) StreamCut(io.pravega.client.stream.StreamCut) HashMap(java.util.HashMap) Cleanup(lombok.Cleanup) Segment(io.pravega.client.segment.impl.Segment)

Example 2 with ReaderGroupStateInit

use of io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit in project pravega by pravega.

the class SerializationTest method testReaderGroupInit.

@Test
public void testReaderGroupInit() throws Exception {
    ReaderGroupInitSerializer initSerializer = new ReaderGroupInitSerializer();
    ReaderGroupConfig config = ReaderGroupConfig.builder().disableAutomaticCheckpoints().groupRefreshTimeMillis(r.nextInt(1000)).stream(createSegment().getStream()).build();
    verify(initSerializer, new ReaderGroupStateInit(config, createSegmentRangeMap(), createSegmentToLongMap(), false));
    CompactReaderGroupStateBuilder builder = new CompactReaderGroupState.CompactReaderGroupStateBuilder();
    builder.assignedSegments(createMap(this::createString, this::createSegmentRangeMap));
    builder.checkpointState(new CheckpointState.CheckpointStateBuilder().checkpoints(createList(this::createString)).lastCheckpointPosition(createSegmentToLongMap()).checkpointPositions(createMap(this::createString, this::createSegmentToLongMap)).uncheckpointedHosts(createMap(this::createString, this::createStringList)).build());
    builder.config(config);
    builder.distanceToTail(createMap(this::createString, r::nextLong));
    builder.endSegments(createSegmentToLongMap());
    builder.unassignedSegments(createSegmentRangeMap());
    builder.futureSegments(createMap(this::createSegmentWithRange, () -> new HashSet<>(createLongList())));
    builder.lastReadPosition(createSegmentRangeMap());
    verify(initSerializer, builder.build());
    ReaderGroupStateInitSerializer newSerializer = new ReaderGroupStateInit.ReaderGroupStateInitSerializer();
    ReaderGroupStateInitSerializer oldSerializer = new ReaderGroupStateInit.ReaderGroupStateInitSerializer() {

        @Override
        protected void declareVersions() {
            version(0).revision(0, this::write00, this::read00);
        }
    };
    ReaderGroupStateInit init = new ReaderGroupStateInit(config, createSegmentRangeMap(), createSegmentToLongMap(), false);
    ReaderGroupStateInit oldFormat = newSerializer.deserialize(oldSerializer.serialize(init));
    assertEquals(init.getStartingSegments().keySet().stream().map(s -> s.getSegment()).collect(Collectors.toSet()), oldFormat.getStartingSegments().keySet().stream().map(s -> s.getSegment()).collect(Collectors.toSet()));
    assertEquals(init.getEndSegments(), oldFormat.getEndSegments());
    assertEquals(init.getConfig(), oldFormat.getConfig());
}
Also used : ReaderGroupConfig(io.pravega.client.stream.ReaderGroupConfig) ReaderGroupStateInit(io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit) CompactReaderGroupStateBuilder(io.pravega.client.stream.impl.ReaderGroupState.CompactReaderGroupState.CompactReaderGroupStateBuilder) ReaderGroupInitSerializer(io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupInitSerializer) ReaderGroupStateInitSerializer(io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit.ReaderGroupStateInitSerializer) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with ReaderGroupStateInit

use of io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit in project pravega by pravega.

the class ReaderGroupImpl method updateConfigInStateSynchronizer.

private void updateConfigInStateSynchronizer(ReaderGroupConfig config, long newGen) {
    Map<SegmentWithRange, Long> segments = getSegmentsForStreams(controller, config);
    synchronizer.updateState((s, updates) -> {
        updates.add(new ReaderGroupStateInit(ReaderGroupConfig.cloneConfig(config, config.getReaderGroupId(), newGen), segments, getEndSegmentsForStreams(config), false));
    });
}
Also used : ReaderGroupStateInit(io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit)

Aggregations

ReaderGroupStateInit (io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit)3 ReaderGroupConfig (io.pravega.client.stream.ReaderGroupConfig)2 Segment (io.pravega.client.segment.impl.Segment)1 StreamCut (io.pravega.client.stream.StreamCut)1 CompactReaderGroupStateBuilder (io.pravega.client.stream.impl.ReaderGroupState.CompactReaderGroupState.CompactReaderGroupStateBuilder)1 ReaderGroupInitSerializer (io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupInitSerializer)1 ReaderGroupStateInitSerializer (io.pravega.client.stream.impl.ReaderGroupState.ReaderGroupStateInit.ReaderGroupStateInitSerializer)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Cleanup (lombok.Cleanup)1 Test (org.junit.Test)1