Source:
<code>private void createKafkaTasksForGroup(int groupId, int replicas) throws JsonProcessingException { Map<Integer, Long> startPartitions = taskGroups.get(groupId).partitionOffsets; <START> Map<Integer, Long> endPartitions = new HashMap<>(); END> for (Integer partition : startPartitions.keySet()) { endPartitions.put(partition, Long.MAX_VALUE); } String sequenceName = generateSequenceName(groupId); Map<String, String> consumerProperties = Maps.newHashMap(ioConfig.getConsumerProperties()); DateTime minimumMessageTime = taskGroups.get(groupId).minimumMessageTime.orNull(); DateTime maximumMessageTime = taskGroups.get(groupId).maximumMessageTime.orNull(); KafkaIOConfig kafkaIOConfig = new KafkaIOConfig( sequenceName, new KafkaPartitions(ioConfig.getTopic(), startPartitions), new KafkaPartitions(ioConfig.getTopic(), endPartitions), consumerProperties, true, false, minimumMessageTime, maximumMessageTime, ioConfig.isSkipOffsetGaps() ); final String checkpoints = sortingMapper.writerWithType(new TypeReference<TreeMap<Integer, Map<Integer, Long>>>() { }).writeValueAsString(taskGroups.get(groupId).sequenceOffsets); final Map<String, Object> context = spec.getContext() == null ? ImmutableMap.of("checkpoints", checkpoints) : ImmutableMap.<String, Object>builder() .put("checkpoints", checkpoints) .putAll(spec.getContext()) .build(); for (int i = 0; i < replicas; i++) { String taskId = Joiner.on("_").join(sequenceName, getRandomId()); KafkaIndexTask indexTask = new KafkaIndexTask( taskId, new TaskResource(sequenceName, 1), spec.getDataSchema(), taskTuningConfig, kafkaIOConfig, context, null, null ); Optional<TaskQueue> taskQueue = taskMaster.getTaskQueue(); if (taskQueue.isPresent()) { try { taskQueue.get().add(indexTask); } catch (EntryExistsException e) { log.error("Tried to add task [%s] but it already exists", indexTask.getId()); } } else { log.error("Failed to get task queue because I'm not the leader!"); } } }</code><technical_language>resolve this TODO</technical_language>

Target:
private void createKafkaTasksForGroup(int groupId, int replicas) throws JsonProcessingException { Map<Integer, Long> startPartitions = taskGroups.get(groupId).partitionOffsets; Map<Integer, Long> endPartitions = new HashMap<>(); for (Integer partition : startPartitions.keySet()) { endPartitions.put(partition, Long.MAX_VALUE); } String sequenceName = generateSequenceName(groupId); Map<String, String> consumerProperties = Maps.newHashMap(ioConfig.getConsumerProperties()); DateTime minimumMessageTime = taskGroups.get(groupId).minimumMessageTime.orNull(); DateTime maximumMessageTime = taskGroups.get(groupId).maximumMessageTime.orNull(); KafkaIOConfig kafkaIOConfig = new KafkaIOConfig( sequenceName, new KafkaPartitions(ioConfig.getTopic(), startPartitions), new KafkaPartitions(ioConfig.getTopic(), endPartitions), consumerProperties, true, false, minimumMessageTime, maximumMessageTime, ioConfig.isSkipOffsetGaps() ); final String checkpoints = sortingMapper.writerWithType(new TypeReference<TreeMap<Integer, Map<Integer, Long>>>() { }).writeValueAsString(taskGroups.get(groupId).sequenceOffsets); final Map<String, Object> context = spec.getContext() == null ? ImmutableMap.of("checkpoints", checkpoints, IS_INCREMENTAL_HANDOFF_SUPPORTED, true) : ImmutableMap.<String, Object>builder() .put("checkpoints", checkpoints) .put(IS_INCREMENTAL_HANDOFF_SUPPORTED, true) .putAll(spec.getContext()) .build(); for (int i = 0; i < replicas; i++) { String taskId = Joiner.on("_").join(sequenceName, getRandomId()); KafkaIndexTask indexTask = new KafkaIndexTask( taskId, new TaskResource(sequenceName, 1), spec.getDataSchema(), taskTuningConfig, kafkaIOConfig, context, null, null ); Optional<TaskQueue> taskQueue = taskMaster.getTaskQueue(); if (taskQueue.isPresent()) { try { taskQueue.get().add(indexTask); } catch (EntryExistsException e) { log.error("Tried to add task [%s] but it already exists", indexTask.getId()); } } else { log.error("Failed to get task queue because I'm not the leader!"); } } }