private void fixActionCheckpoint(PullLogManager manager) {
final Table<String, String, PullLog> allLogs = manager.getLogs();
final Table<String, String, ConsumerGroupProgress> progresses = actionCheckpoint.getProgresses();
progresses.values().forEach(progress -> {
final String subject = progress.getSubject();
final String group = progress.getGroup();
final String groupAndSubject = GroupAndSubject.groupAndSubject(subject, group);
final Map<String, ConsumerProgress> consumers = progress.getConsumers();
final Map<String, PullLog> logs = allLogs.column(groupAndSubject);
logs.forEach((consumerId, log) -> {
final long pull = log.getMaxOffset() - 1;
final ConsumerProgress consumer = consumers.get(consumerId);
if (consumer != null) {
consumer.setPull(pull);
} else {
consumers.put(consumerId, new ConsumerProgress(subject, group, consumerId, pull, -1));
}
});
if (consumers.size() == 1) {
consumers.values().forEach(consumer -> {
if (consumer.getPull() < 0) {
progress.setBroadcast(true);
consumer.setPull(progress.getPull());
}
});
}
});
}