Program: 12454
Project: 12454
Buggy source:
@Override @TxMain public void saveAfterSent(final Payload payload) throws Exception {
  if (payload == null) {
    return;
  }
  if (payload.getId() == null || payload.getId().intValue() == 0) {
    throw new Exception("String_Node_Str");
  }
  jdbcExecutor.submit(new Runnable(){
    @Override public void run(){
      final String sql="String_Node_Str";
      mainJdbc.update(new PreparedStatementCreator(){
        @Override public PreparedStatement createPreparedStatement(        Connection connection) throws SQLException {
          PreparedStatement ps=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
          ps.setObject(1,payload.getId());
          ps.setObject(2,payload.getTitle());
          ps.setObject(3,payload.getBadge());
          ps.setObject(4,payload.getExtras());
          ps.setObject(5,payload.getSound());
          ps.setObject(6,payload.getProductId());
          ps.setObject(7,payload.getTotalUsers());
          ps.setObject(8,payload.getCreateAt());
          ps.setObject(9,payload.getStatusId());
          ps.setObject(10,payload.getBroadcast());
          ps.setObject(11,payload.getSentDate());
          return ps;
        }
      }
);
      MetricBuilder.jdbcUpdateMeter.mark(1);
      if (payload.getClients() != null) {
        List<Object[]> args=Lists.newArrayList();
        Set<String> cc=payload.getFailedClients();
        final String sql0="String_Node_Str";
        for (        String userId : payload.getClients()) {
          int statusId=cc.contains(userId) ? 0 : 1;
          args.add(new Object[]{payload.getId(),userId,payload.getProductId(),statusId,new Date().getTime() / 1000});
        }
        mainJdbc.batchUpdate(sql0,args);
        MetricBuilder.jdbcUpdateMeter.mark(1);
      }
      updatePendingCount(false);
    }
  }
);
  updatePendingCount(true);
}

Fixed version (ground truth):
@Override @TxMain public void saveAfterSent(final Payload payload) throws Exception {
  if (payload == null) {
    return;
  }
  if (payload.getId() == null || payload.getId().intValue() == 0) {
    throw new Exception("String_Node_Str");
  }
  jdbcExecutor.submit(new Runnable(){
    @Override public void run(){
      final String sql="String_Node_Str";
      mainJdbc.update(new PreparedStatementCreator(){
        @Override public PreparedStatement createPreparedStatement(        Connection connection) throws SQLException {
          PreparedStatement ps=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
          ps.setObject(1,payload.getId());
          ps.setObject(2,payload.getTitle());
          ps.setObject(3,payload.getBadge());
          ps.setObject(4,payload.getExtras());
          ps.setObject(5,payload.getSound());
          ps.setObject(6,payload.getProductId());
          ps.setObject(7,payload.getTotalUsers());
          ps.setObject(8,payload.getCreateAt());
          ps.setObject(9,payload.getStatusId());
          ps.setObject(10,payload.getBroadcast());
          ps.setObject(11,payload.getSentDate());
          return ps;
        }
      }
);
      MetricBuilder.jdbcUpdateMeter.mark(1);
      if (payload.getClients() != null) {
        List<Object[]> args=Lists.newArrayList();
        final String sql0="String_Node_Str";
        for (        String userId : payload.getClients()) {
          PushError error=payload.getFailedClients().get(userId);
          int statusId=error != null ? 0 : 1;
          args.add(new Object[]{payload.getId(),userId,payload.getProductId(),statusId,new Date().getTime() / 1000,error != null ? error.getCode() : null,error != null ? error.getMsg() : null});
        }
        mainJdbc.batchUpdate(sql0,args);
        MetricBuilder.jdbcUpdateMeter.mark(1);
      }
      updatePendingCount(false);
    }
  }
);
  updatePendingCount(true);
}