[Demonstration 1]

[Buggy Method]
private Message getMessage(TopicPartition topicPartition, long offset, SimpleConsumer consumer) {
    LOG.debug("fetching message topic {} partition {} offset {}", topicPartition.getTopic(), topicPartition.getPartition(), offset);
    final int MAX_MESSAGE_SIZE_BYTES = mConfig.getMaxMessageSizeBytes();
    final String clientName = getClientName(topicPartition);
    kafka.api.FetchRequest request = new FetchRequestBuilder().clientId(clientName).addFetch(topicPartition.getTopic(), topicPartition.getPartition(), offset, MAX_MESSAGE_SIZE_BYTES).build();
    FetchResponse response = consumer.fetch(request);
    if (response.hasError()) {
        consumer.close();
        throw new RuntimeException("Error fetching offset data. Reason: " + response.errorCode(topicPartition.getTopic(), topicPartition.getPartition()));
    }
    MessageAndOffset messageAndOffset = response.messageSet(topicPartition.getTopic(), topicPartition.getPartition()).iterator().next();
    byte[] keyBytes = null;
    if (messageAndOffset.message().hasKey()) {
        ByteBuffer key = messageAndOffset.message().key();
        keyBytes = new byte[key.limit()];
        key.get(keyBytes);
    }
    byte[] payloadBytes = null;
    if (!messageAndOffset.message().isNull()) {
        ByteBuffer payload = messageAndOffset.message().payload();
        payloadBytes = new byte[payload.limit()];
        payload.get(payloadBytes);
    }
    Long timestamp = null;
    ConsumerConfig consumerConfig = new ConsumerConfig(mConfig.getKafkaSeedBrokerHost() + ":" + mConfig.getKafkaSeedBrokerPort(), mConfig.getKafkaGroup());
    KafkaConsumer kafkaConsumer = new KafkaConsumer(consumerConfig.getProperties());
    kafkaConsumer.subscribe(Arrays.asList(topicPartition.getTopic()));
    doOffsetReset(kafkaConsumer, topicPartition.getTopic(), topicPartition.getPartition(), offset);
    ConsumerRecords<byte[], byte[]> records = (ConsumerRecords) kafkaConsumer.poll(10000);
    if (records.iterator().next() != null) {
        timestamp = records.iterator().next().timestamp();
    }
    return new Message(topicPartition.getTopic(), topicPartition.getPartition(), messageAndOffset.offset(), keyBytes, payloadBytes, timestamp);
}

[Buggy Hunk]
doOffsetReset(kafkaConsumer, topicPartition.getTopic(), topicPartition.getPartition(), offset);

[Patch]
doOffsetReset(kafkaConsumer, topicPartition.getTopic(), topicPartition.getPartition(), offset-1);

[Demonstration 2]

[Buggy Method]
private void updateSonnyMooreRanking(Table eventsTable, List<PowerRanking> sonnyMoorePowerRankings, List<Event> events) throws ParseException {
    Calendar toDateCalendar = Calendar.getInstance();
    Date currentTime = toDateCalendar.getTime();
    toDateCalendar.add(Calendar.HOUR, 1);
    Date toDate = toDateCalendar.getTime();
    Calendar resultCalendar = Calendar.getInstance();
    resultCalendar.add(Calendar.MINUTE, -220);
    Date resultToDateCalendar = resultCalendar.getTime();
    resultCalendar.add(Calendar.HOUR, -1);
    Date resultFromDateCalendar = resultCalendar.getTime();
    for (Event event : events) {
        DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
        Date eventDate = format.parse(event.getGame_date());
        if (eventDate.after(currentTime) && eventDate.before(toDate)) {
            String homeTeamName = event.getHome_team().getFull_name().trim().toUpperCase();
            String awayTeamName = event.getAway_team().getFull_name().trim().toUpperCase();
            PowerRanking homeTeam = (homeTeamName == null) ? null : getMatchingTeamName(sonnyMoorePowerRankings, homeTeamName);
            PowerRanking awayTeam = (awayTeamName == null) ? null : getMatchingTeamName(sonnyMoorePowerRankings, awayTeamName);
            addEvent(eventsTable, new SonnyMoorePrediction() {

                {
                    setEventId(event.getId());
                    setHomeTeamName(event.getHome_team().getFull_name());
                    setAwayTeamName(event.getAway_team().getFull_name());
                    setHomeTeamRanking((homeTeam == null) ? 0 : homeTeam.getPowerRanking());
                    setAwayTeamRanking((awayTeam == null) ? 0 : awayTeam.getPowerRanking());
                    setGameDate(eventDate);
                }
            });
        }
        if (eventDate.after(resultFromDateCalendar) && eventDate.before(resultToDateCalendar)) {
            System.out.println("Event Id before update : " + event.getId());
            updateEvent(eventsTable, event);
        }
    }
}

[Buggy Hunk]
setEventId(event.getId());

[Patch]
setEventId(event.getId().intValue());