Program: 61081
Project: 61081
Buggy source:
/** 
 * Maps the data.
 * @param row     The current table row key.
 * @param values  The columns.
 * @param context The current context.
 * @throws IOException When something is broken with the data.
 * @see org.apache.hadoop.mapreduce.Mapper#map(KEYIN,VALUEIN,org.apache.hadoop.mapreduce.Mapper.Context)
 */
@Override public void map(ImmutableBytesWritable row,Result values,Context context) throws IOException {
  Preconditions.checkState(values != null,"String_Node_Str");
  try {
    byte[] currentRow=values.getRow();
    if (lastRow == null || !Bytes.equals(lastRow,currentRow)) {
      lastRow=currentRow;
      currentRowKey=Bytes.toStringBinary(currentRow);
      currentFamily=null;
      currentQualifier=null;
      context.getCounter(Counters.ROWS).increment(1);
      context.write(new Text("String_Node_Str"),new IntWritable(1));
    }
    if (!values.isEmpty()) {
      int cellCount=0;
      for (      Cell value : values.listCells()) {
        cellCount++;
        if (currentFamily == null || !CellUtil.matchingFamily(value,currentFamily)) {
          currentFamily=CellUtil.cloneFamily(value);
          currentFamilyName=Bytes.toStringBinary(currentFamily);
          currentQualifier=null;
          context.getCounter("String_Node_Str",currentFamilyName).increment(1);
          if (1 == context.getCounter("String_Node_Str",currentFamilyName).getValue()) {
            context.write(new Text("String_Node_Str"),new IntWritable(1));
            context.write(new Text(currentFamily),new IntWritable(1));
          }
        }
        if (currentQualifier == null || !CellUtil.matchingQualifier(value,currentQualifier)) {
          currentQualifier=CellUtil.cloneQualifier(value);
          currentQualifierName=currentFamilyName + separator + Bytes.toStringBinary(currentQualifier);
          currentRowQualifierName=currentRowKey + separator + currentQualifierName;
          context.write(new Text("String_Node_Str"),new IntWritable(1));
          context.write(new Text(currentQualifierName),new IntWritable(1));
        }
        context.write(new Text(currentRowQualifierName + "String_Node_Str"),new IntWritable(1));
      }
      context.getCounter(Counters.CELLS).increment(cellCount);
    }
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
/** 
 * Maps the data.
 * @param row     The current table row key.
 * @param values  The columns.
 * @param context The current context.
 * @throws IOException When something is broken with the data.
 * @see org.apache.hadoop.mapreduce.Mapper#map(KEYIN,VALUEIN,org.apache.hadoop.mapreduce.Mapper.Context)
 */
@Override @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="String_Node_Str",justification="String_Node_Str") public void map(ImmutableBytesWritable row,Result values,Context context) throws IOException {
  Preconditions.checkState(values != null,"String_Node_Str");
  try {
    byte[] currentRow=values.getRow();
    if (lastRow == null || !Bytes.equals(lastRow,currentRow)) {
      lastRow=currentRow;
      currentRowKey=Bytes.toStringBinary(currentRow);
      currentFamily=null;
      currentQualifier=null;
      context.getCounter(Counters.ROWS).increment(1);
      context.write(new Text("String_Node_Str"),new IntWritable(1));
    }
    if (!values.isEmpty()) {
      int cellCount=0;
      for (      Cell value : values.listCells()) {
        cellCount++;
        if (currentFamily == null || !CellUtil.matchingFamily(value,currentFamily)) {
          currentFamily=CellUtil.cloneFamily(value);
          currentFamilyName=Bytes.toStringBinary(currentFamily);
          currentQualifier=null;
          context.getCounter("String_Node_Str",currentFamilyName).increment(1);
          if (1 == context.getCounter("String_Node_Str",currentFamilyName).getValue()) {
            context.write(new Text("String_Node_Str"),new IntWritable(1));
            context.write(new Text(currentFamily),new IntWritable(1));
          }
        }
        if (currentQualifier == null || !CellUtil.matchingQualifier(value,currentQualifier)) {
          currentQualifier=CellUtil.cloneQualifier(value);
          currentQualifierName=currentFamilyName + separator + Bytes.toStringBinary(currentQualifier);
          currentRowQualifierName=currentRowKey + separator + currentQualifierName;
          context.write(new Text("String_Node_Str"),new IntWritable(1));
          context.write(new Text(currentQualifierName),new IntWritable(1));
        }
        context.write(new Text(currentRowQualifierName + "String_Node_Str"),new IntWritable(1));
      }
      context.getCounter(Counters.CELLS).increment(cellCount);
    }
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
}