Java Code Examples for kafka.javaapi.consumer.SimpleConsumer#getOffsetsBefore()
The following examples show how to use
kafka.javaapi.consumer.SimpleConsumer#getOffsetsBefore() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: LegacyKafkaClient.java From secor with Apache License 2.0 | 6 votes |
private long findLastOffset(TopicPartition topicPartition, SimpleConsumer consumer) { TopicAndPartition topicAndPartition = new TopicAndPartition(topicPartition.getTopic(), topicPartition.getPartition()); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo( kafka.api.OffsetRequest.LatestTime(), 1)); final String clientName = getClientName(topicPartition); OffsetRequest request = new OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { throw new RuntimeException("Error fetching offset data. Reason: " + response.errorCode(topicPartition.getTopic(), topicPartition.getPartition())); } long[] offsets = response.offsets(topicPartition.getTopic(), topicPartition.getPartition()); return offsets[0] - 1; }
Example 2
Source File: SimpleConsumerExample.java From hermes with Apache License 2.0 | 6 votes |
public static long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { System.out.println("Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 3
Source File: ZkConsumerCommand.java From azeroth with Apache License 2.0 | 6 votes |
private static long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), CLIENT_ID); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { System.out.println("Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 4
Source File: OffsetMonitor.java From uReplicator with Apache License 2.0 | 6 votes |
private long getLatestOffset(SimpleConsumer consumer, TopicAndPartition topicAndPartition) { Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(kafka.api.OffsetRequest.LatestTime(), 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), consumer.clientId()); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { logger.warn("Failed to fetch offset for {} due to {}", topicAndPartition, response.errorCode(topicAndPartition.topic(), topicAndPartition.partition())); return -1; } long[] offsets = response.offsets(topicAndPartition.topic(), topicAndPartition.partition()); return offsets[0]; }
Example 5
Source File: ZkConsumerCommand.java From jeesuite-libs with Apache License 2.0 | 6 votes |
private static long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), CLIENT_ID); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { System.out.println( "Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 6
Source File: NativeSimpleConsumer.java From spring-kafka-demo with Apache License 2.0 | 6 votes |
public static long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest( requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { System.out.println("Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partition) ); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 7
Source File: KafkaRequest.java From HiveKa with Apache License 2.0 | 6 votes |
@Override public long getLastOffset(long time) { SimpleConsumer consumer = new SimpleConsumer(uri.getHost(), uri.getPort(), 60000, 1024 * 1024, "hadoop-etl"); Map<TopicAndPartition, PartitionOffsetRequestInfo> offsetInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); offsetInfo.put(new TopicAndPartition(topic, partition), new PartitionOffsetRequestInfo( time, 1)); OffsetResponse response = consumer.getOffsetsBefore(new OffsetRequest(offsetInfo, kafka.api.OffsetRequest.CurrentVersion(),"hadoop-etl")); long[] endOffset = response.offsets(topic, partition); consumer.close(); if(endOffset.length == 0) { log.info("The exception is thrown because the latest offset retunred zero for topic : " + topic + " and partition " + partition); } this.latestOffset = endOffset[0]; return endOffset[0]; }
Example 8
Source File: KafkaRequest.java From HiveKa with Apache License 2.0 | 6 votes |
@Override public long getEarliestOffset() { if (this.earliestOffset == -2 && uri != null) { // TODO : Make the hardcoded paramters configurable SimpleConsumer consumer = new SimpleConsumer(uri.getHost(), uri.getPort(), 60000, 1024 * 1024, "hadoop-etl"); Map<TopicAndPartition, PartitionOffsetRequestInfo> offsetInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); offsetInfo.put(new TopicAndPartition(topic, partition), new PartitionOffsetRequestInfo( kafka.api.OffsetRequest.EarliestTime(), 1)); OffsetResponse response = consumer .getOffsetsBefore(new OffsetRequest(offsetInfo, kafka.api.OffsetRequest .CurrentVersion(), "hadoop-etl")); long[] endOffset = response.offsets(topic, partition); consumer.close(); this.earliestOffset = endOffset[0]; return endOffset[0]; } else { return this.earliestOffset; } }
Example 9
Source File: KafkaMetadataUtil.java From attic-apex-malhar with Apache License 2.0 | 6 votes |
/** * @param consumer * @param topic * @param partition * @param whichTime * @param clientName * @return 0 if consumer is null at this time */ public static long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) { if (consumer == null) { return 0; } TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); OffsetRequest request = new OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { logger.error("Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 10
Source File: KafkaLowLevelConsumer08.java From datacollector with Apache License 2.0 | 6 votes |
private long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) throws StageException { try { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest( requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { LOG.error(KafkaErrors.KAFKA_22.getMessage(), consumer.host() + ":" + consumer.port(), response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; } catch (Exception e) { LOG.error(KafkaErrors.KAFKA_30.getMessage(), e.toString(), e); throw new StageException(KafkaErrors.KAFKA_30, e.toString(), e); } }
Example 11
Source File: KafkaLowLevelConsumer09.java From datacollector with Apache License 2.0 | 6 votes |
private long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) throws StageException { try { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest( requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { LOG.error(KafkaErrors.KAFKA_22.getMessage(), consumer.host() + ":" + consumer.port(), response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; } catch (Exception e) { LOG.error(KafkaErrors.KAFKA_30.getMessage(), e.toString(), e); throw new StageException(KafkaErrors.KAFKA_30, e.toString(), e); } }
Example 12
Source File: KafkaLatestOffsetFetcher.java From eagle with Apache License 2.0 | 5 votes |
public long getLatestOffset(SimpleConsumer consumer, String topic, int partition, String clientName) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, kafka.api.PartitionOffsetRequestInfo> requestInfo = new HashMap<>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(kafka.api.OffsetRequest.LatestTime(), 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { throw new RuntimeException("Error fetching data offset from the broker. Reason: " + response.errorCode(topic, partition)); } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 13
Source File: Kafka08ConsumerClient.java From incubator-gobblin with Apache License 2.0 | 5 votes |
private long getOffset(KafkaPartition partition, Map<TopicAndPartition, PartitionOffsetRequestInfo> offsetRequestInfo) throws KafkaOffsetRetrievalFailureException { SimpleConsumer consumer = this.getSimpleConsumer(partition.getLeader().getHostAndPort()); for (int i = 0; i < this.fetchOffsetRetries; i++) { try { OffsetResponse offsetResponse = consumer.getOffsetsBefore(new OffsetRequest(offsetRequestInfo, kafka.api.OffsetRequest.CurrentVersion(), this.clientName)); if (offsetResponse.hasError()) { throw new RuntimeException("offsetReponse has error: " + offsetResponse.errorCode(partition.getTopicName(), partition.getId())); } return offsetResponse.offsets(partition.getTopicName(), partition.getId())[0]; } catch (Exception e) { log.warn(String.format("Fetching offset for partition %s has failed %d time(s). Reason: %s", partition, i + 1, e)); if (i < this.fetchOffsetRetries - 1) { try { Thread.sleep((long) ((i + Math.random()) * 1000)); } catch (InterruptedException e2) { log.error("Caught interrupted exception between retries of getting latest offsets. " + e2); } } } } throw new KafkaOffsetRetrievalFailureException(String.format("Fetching offset for partition %s has failed.", partition)); }
Example 14
Source File: KafkaWrapper.java From incubator-gobblin with Apache License 2.0 | 5 votes |
private long getOffset(KafkaPartition partition, Map<TopicAndPartition, PartitionOffsetRequestInfo> offsetRequestInfo) throws KafkaOffsetRetrievalFailureException { SimpleConsumer consumer = this.getSimpleConsumer(partition.getLeader().getHostAndPort()); for (int i = 0; i < this.fetchOffsetRetries; i++) { try { OffsetResponse offsetResponse = consumer.getOffsetsBefore(new OffsetRequest(offsetRequestInfo, kafka.api.OffsetRequest.CurrentVersion(), this.clientName)); if (offsetResponse.hasError()) { throw new RuntimeException( "offsetReponse has error: " + offsetResponse.errorCode(partition.getTopicName(), partition.getId())); } return offsetResponse.offsets(partition.getTopicName(), partition.getId())[0]; } catch (Exception e) { LOG.warn( String.format("Fetching offset for partition %s has failed %d time(s). Reason: %s", partition, i + 1, e)); if (i < this.fetchOffsetRetries - 1) { try { Thread.sleep((long) ((i + Math.random()) * 1000)); } catch (InterruptedException e2) { LOG.error("Caught interrupted exception between retries of getting latest offsets. " + e2); } } } } throw new KafkaOffsetRetrievalFailureException( String.format("Fetching offset for partition %s has failed.", partition)); }
Example 15
Source File: SimpleKafkaMessageListener.java From micro-integrator with Apache License 2.0 | 5 votes |
public static long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); OffsetRequest request = new OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { log.error("Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 16
Source File: MetricSystemTest.java From eagle with Apache License 2.0 | 5 votes |
private long getLastOffset(SimpleConsumer consumer, String topic, int partition, long whichTime, String clientName) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfo = new HashMap<>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); OffsetRequest request = new OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { System.out.println("error fetching data offset data the broker. reason: " + response.errorCode(topic, partition)); return 0; } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 17
Source File: KafkaLatestOffsetFetcher.java From eagle with Apache License 2.0 | 5 votes |
public long getLatestOffset(SimpleConsumer consumer, String topic, int partition, String clientName) { TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partition); Map<TopicAndPartition, kafka.api.PartitionOffsetRequestInfo> requestInfo = new HashMap<>(); requestInfo.put(topicAndPartition, new PartitionOffsetRequestInfo(kafka.api.OffsetRequest.LatestTime(), 1)); kafka.javaapi.OffsetRequest request = new kafka.javaapi.OffsetRequest(requestInfo, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { throw new RuntimeException("Error fetching data offset from the broker. Reason: " + response.errorCode(topic, partition) ); } long[] offsets = response.offsets(topic, partition); return offsets[0]; }
Example 18
Source File: SimpleKafkaConsumer.java From twill with Apache License 2.0 | 5 votes |
/** * Retrieves the last offset before the given timestamp for a given topic partition. * * @return The last offset before the given timestamp or {@code 0} if failed to do so. */ private long getLastOffset(TopicPartition topicPart, long timestamp) { BrokerInfo brokerInfo = brokerService.getLeader(topicPart.getTopic(), topicPart.getPartition()); SimpleConsumer consumer = brokerInfo == null ? null : consumers.getUnchecked(brokerInfo); // If no broker, treat it as failure attempt. if (consumer == null) { LOG.warn("Failed to talk to any broker. Default offset to 0 for {}", topicPart); return 0L; } // Fire offset request OffsetRequest request = new OffsetRequest(ImmutableMap.of( new TopicAndPartition(topicPart.getTopic(), topicPart.getPartition()), new PartitionOffsetRequestInfo(timestamp, 1) ), kafka.api.OffsetRequest.CurrentVersion(), consumer.clientId()); OffsetResponse response = consumer.getOffsetsBefore(request); // Retrieve offsets from response long[] offsets = response.hasError() ? null : response.offsets(topicPart.getTopic(), topicPart.getPartition()); if (offsets == null || offsets.length <= 0) { short errorCode = response.errorCode(topicPart.getTopic(), topicPart.getPartition()); // If the topic partition doesn't exists, use offset 0 without logging error. if (errorCode != ErrorMapping.UnknownTopicOrPartitionCode()) { consumers.refresh(brokerInfo); LOG.warn("Failed to fetch offset for {} with timestamp {}. Error: {}. Default offset to 0.", topicPart, timestamp, errorCode); } return 0L; } LOG.debug("Offset {} fetched for {} with timestamp {}.", offsets[0], topicPart, timestamp); return offsets[0]; }
Example 19
Source File: KafkaSimpleConsumer.java From julongchain with Apache License 2.0 | 5 votes |
/** * 获取当前groupID对应的consumer在对应的topic和partition中对应的offset偏移量 * * @param consumer 消费者 * @param groupId 消费者分区id * @param topic 所属的Topic * @param partitionID 所属的分区ID * @param whichTime 用于判断,当consumer从没有消费数据的时候,从当前topic的Partition的那个offset开始读取数据 * @param clientName client名称 * @return 正常情况下,返回非负数,当出现异常的时候,返回-1 */ public long getLastOffSet(SimpleConsumer consumer, String groupId, String topic, int partitionID, long whichTime, String clientName) { // 1. 从ZK中获取偏移量,当zk的返回偏移量大于0的时候,表示是一个正常的偏移量 long offset = this.getOffsetOfTopicAndPartition(consumer, groupId, clientName, topic, partitionID); if (offset > 0) { return offset; } // 2. 获取当前topic当前分区的数据偏移量 TopicAndPartition topicAndPartition = new TopicAndPartition(topic, partitionID); Map<TopicAndPartition, PartitionOffsetRequestInfo> requestInfoMap = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); requestInfoMap.put(topicAndPartition, new PartitionOffsetRequestInfo(whichTime, 1)); OffsetRequest request = new OffsetRequest(requestInfoMap, kafka.api.OffsetRequest.CurrentVersion(), clientName); OffsetResponse response = consumer.getOffsetsBefore(request); if (response.hasError()) { System.out.println("Error fetching data Offset Data the Broker. Reason: " + response.errorCode(topic, partitionID)); return -1; } // 获取偏移量 long[] offsets = response.offsets(topic, partitionID); return offsets[0]; }
Example 20
Source File: ZKOffsetGetter.java From kmanager with Apache License 2.0 | 4 votes |
@Override public OffsetInfo processPartition(String group, String topic, String partitionId) { OffsetInfo offsetInfo = null; Tuple2<String, Stat> offset_stat = readZkData( ZkUtils.ConsumersPath() + "/" + group + "/" + "offsets/" + topic + "/" + partitionId); if (offset_stat == null) { return null; } if (System.currentTimeMillis() - offset_stat._2().getMtime() > excludeByLastSeen) { // TODO 对于最后一次消费时间为一周前的,直接抛弃。是否维护一个被排除的partition 列表? return null; } ZkDataAndStat dataAndStat = ZKUtils .readDataMaybeNull(ZkUtils.ConsumersPath() + "/" + group + "/" + "owners/" + topic + "/" + partitionId); try { Integer leader = (Integer) ZKUtils.getZKUtilsFromKafka() .getLeaderForPartition(topic, Integer.parseInt(partitionId)).get(); SimpleConsumer consumer = null; if (consumerMap.containsKey(leader)) { consumer = consumerMap.get(leader); } else { consumer = getConsumer(leader); consumerMap.put(leader, consumer); } TopicAndPartition topicAndPartition = new TopicAndPartition(topic, Integer.parseInt(partitionId)); Map<TopicAndPartition, PartitionOffsetRequestInfo> tpMap = new HashMap<TopicAndPartition, PartitionOffsetRequestInfo>(); tpMap.put(topicAndPartition, new PartitionOffsetRequestInfo( earliest ? kafka.api.OffsetRequest.EarliestTime() : kafka.api.OffsetRequest.LatestTime(), 1)); OffsetRequest request = new OffsetRequest(tpMap, kafka.api.OffsetRequest.CurrentVersion(), String.format("%s_%s_%s", topic, partitionId, clientId)); OffsetResponse response = null; response = consumer.getOffsetsBefore(request); if (response.hasError()) { LOG.error("error fetching data Offset from the Broker {}. reason: {}", leader, response.errorCode(topic, Integer.parseInt(partitionId))); throw new RuntimeException("fetching offset error!"); } long[] offsets = response.offsets(topic, Integer.parseInt(partitionId)); if (dataAndStat.getData() == null) { // Owner not available // TODO dataAndStat that partition may not have any owner offsetInfo = new OffsetInfo(group, topic, Integer.parseInt(partitionId), Long.parseLong(offset_stat._1()), offsets[offsets.length - 1], "NA", offset_stat._2().getCtime(), offset_stat._2().getMtime()); } else { offsetInfo = new OffsetInfo(group, topic, Integer.parseInt(partitionId), Long.parseLong(offset_stat._1()), offsets[offsets.length - 1], dataAndStat.getData(), offset_stat._2().getCtime(), offset_stat._2().getMtime()); } } catch (Exception e) { if (e instanceof ZkNoNodeException) { } else if (e instanceof NoNodeException) { // TODO dataAndStat that partition may not have any owner } else if (e instanceof BrokerNotAvailableException) { // TODO broker id -1 ? Alerting??? LOG.warn(String.format("Get leader partition for [group: %s, topic: %s, partition: %s] faild!", group, topic, partitionId), e.getMessage()); if (dataAndStat.getData() == null) { // Owner not available // TODO dataAndStat that partition may not have any owner offsetInfo = new OffsetInfo(group, topic, Integer.parseInt(partitionId), Long.parseLong(offset_stat._1()), -1l, "NA", offset_stat._2().getCtime(), offset_stat._2().getMtime()); } else { offsetInfo = new OffsetInfo(group, topic, Integer.parseInt(partitionId), Long.parseLong(offset_stat._1()), -1l, dataAndStat.getData(), offset_stat._2().getCtime(), offset_stat._2().getMtime()); } } else { throw new RuntimeException("Something went wrong!" + e); } } return offsetInfo; }