Search in sources :

Example 1 with TaskOffsetSum

use of org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum in project kafka by apache.

the class SubscriptionInfo method setTaskOffsetSumDataWithNamedTopologiesFromTaskOffsetSumMap.

// For version > MIN_NAMED_TOPOLOGY_VERSION
private void setTaskOffsetSumDataWithNamedTopologiesFromTaskOffsetSumMap(final Map<TaskId, Long> taskOffsetSums) {
    data.setTaskOffsetSums(taskOffsetSums.entrySet().stream().map(t -> {
        final SubscriptionInfoData.TaskOffsetSum taskOffsetSum = new SubscriptionInfoData.TaskOffsetSum();
        final TaskId task = t.getKey();
        taskOffsetSum.setTopicGroupId(task.subtopology());
        taskOffsetSum.setPartition(task.partition());
        taskOffsetSum.setNamedTopology(task.topologyName());
        taskOffsetSum.setOffsetSum(t.getValue());
        return taskOffsetSum;
    }).collect(Collectors.toList()));
}
Also used : TaskOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum) TaskId(org.apache.kafka.streams.processor.TaskId) TaskOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum) SubscriptionInfoData(org.apache.kafka.streams.internals.generated.SubscriptionInfoData)

Example 2 with TaskOffsetSum

use of org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum in project kafka by apache.

the class SubscriptionInfo method setTaskOffsetSumDataFromTaskOffsetSumMap.

// For MIN_NAMED_TOPOLOGY_VERSION > version > MIN_VERSION_OFFSET_SUM_SUBSCRIPTION
private void setTaskOffsetSumDataFromTaskOffsetSumMap(final Map<TaskId, Long> taskOffsetSums) {
    final Map<Integer, List<SubscriptionInfoData.PartitionToOffsetSum>> topicGroupIdToPartitionOffsetSum = new HashMap<>();
    for (final Map.Entry<TaskId, Long> taskEntry : taskOffsetSums.entrySet()) {
        final TaskId task = taskEntry.getKey();
        if (task.topologyName() != null) {
            throw new TaskAssignmentException("Named topologies are not compatible with older protocol versions");
        }
        topicGroupIdToPartitionOffsetSum.computeIfAbsent(task.subtopology(), t -> new ArrayList<>()).add(new SubscriptionInfoData.PartitionToOffsetSum().setPartition(task.partition()).setOffsetSum(taskEntry.getValue()));
    }
    data.setTaskOffsetSums(topicGroupIdToPartitionOffsetSum.entrySet().stream().map(t -> {
        final SubscriptionInfoData.TaskOffsetSum taskOffsetSum = new SubscriptionInfoData.TaskOffsetSum();
        taskOffsetSum.setTopicGroupId(t.getKey());
        taskOffsetSum.setPartitionToOffsetSum(t.getValue());
        return taskOffsetSum;
    }).collect(Collectors.toList()));
}
Also used : TaskAssignmentException(org.apache.kafka.streams.errors.TaskAssignmentException) Uuid(org.apache.kafka.common.Uuid) MessageUtil(org.apache.kafka.common.protocol.MessageUtil) MIN_NAMED_TOPOLOGY_VERSION(org.apache.kafka.streams.processor.internals.assignment.StreamsAssignmentProtocolVersions.MIN_NAMED_TOPOLOGY_VERSION) Logger(org.slf4j.Logger) PartitionToOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.PartitionToOffsetSum) TaskId(org.apache.kafka.streams.processor.TaskId) LATEST_SUPPORTED_VERSION(org.apache.kafka.streams.processor.internals.assignment.StreamsAssignmentProtocolVersions.LATEST_SUPPORTED_VERSION) ByteBufferAccessor(org.apache.kafka.common.protocol.ByteBufferAccessor) LoggerFactory(org.slf4j.LoggerFactory) SubscriptionInfoData(org.apache.kafka.streams.internals.generated.SubscriptionInfoData) Set(java.util.Set) HashMap(java.util.HashMap) UUID(java.util.UUID) TaskAssignmentException(org.apache.kafka.streams.errors.TaskAssignmentException) Collectors(java.util.stream.Collectors) ByteBuffer(java.nio.ByteBuffer) StandardCharsets(java.nio.charset.StandardCharsets) ArrayList(java.util.ArrayList) Task(org.apache.kafka.streams.processor.internals.Task) HashSet(java.util.HashSet) List(java.util.List) TaskOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum) Map(java.util.Map) Collections(java.util.Collections) TaskId(org.apache.kafka.streams.processor.TaskId) TaskOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum) TaskOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SubscriptionInfoData(org.apache.kafka.streams.internals.generated.SubscriptionInfoData) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map) PartitionToOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.PartitionToOffsetSum)

Example 3 with TaskOffsetSum

use of org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum in project kafka by apache.

the class SubscriptionInfo method taskOffsetSums.

public Map<TaskId, Long> taskOffsetSums() {
    if (taskOffsetSumsCache == null) {
        taskOffsetSumsCache = new HashMap<>();
        if (data.version() >= MIN_VERSION_OFFSET_SUM_SUBSCRIPTION) {
            for (final TaskOffsetSum taskOffsetSum : data.taskOffsetSums()) {
                if (data.version() >= MIN_NAMED_TOPOLOGY_VERSION) {
                    taskOffsetSumsCache.put(new TaskId(taskOffsetSum.topicGroupId(), taskOffsetSum.partition(), taskOffsetSum.namedTopology()), taskOffsetSum.offsetSum());
                } else {
                    for (final PartitionToOffsetSum partitionOffsetSum : taskOffsetSum.partitionToOffsetSum()) {
                        taskOffsetSumsCache.put(new TaskId(taskOffsetSum.topicGroupId(), partitionOffsetSum.partition()), partitionOffsetSum.offsetSum());
                    }
                }
            }
        } else {
            prevTasks().forEach(taskId -> taskOffsetSumsCache.put(taskId, Task.LATEST_OFFSET));
            standbyTasks().forEach(taskId -> taskOffsetSumsCache.put(taskId, UNKNOWN_OFFSET_SUM));
        }
    }
    return taskOffsetSumsCache;
}
Also used : TaskOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum) TaskId(org.apache.kafka.streams.processor.TaskId) PartitionToOffsetSum(org.apache.kafka.streams.internals.generated.SubscriptionInfoData.PartitionToOffsetSum)

Aggregations

TaskOffsetSum (org.apache.kafka.streams.internals.generated.SubscriptionInfoData.TaskOffsetSum)3 TaskId (org.apache.kafka.streams.processor.TaskId)3 SubscriptionInfoData (org.apache.kafka.streams.internals.generated.SubscriptionInfoData)2 PartitionToOffsetSum (org.apache.kafka.streams.internals.generated.SubscriptionInfoData.PartitionToOffsetSum)2 ByteBuffer (java.nio.ByteBuffer)1 StandardCharsets (java.nio.charset.StandardCharsets)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 UUID (java.util.UUID)1 Collectors (java.util.stream.Collectors)1 Uuid (org.apache.kafka.common.Uuid)1 ByteBufferAccessor (org.apache.kafka.common.protocol.ByteBufferAccessor)1 MessageUtil (org.apache.kafka.common.protocol.MessageUtil)1 TaskAssignmentException (org.apache.kafka.streams.errors.TaskAssignmentException)1 Task (org.apache.kafka.streams.processor.internals.Task)1