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()); } }); } }); }