Program: 17244
Project: 17244
Buggy source:
public Fetcher(Configuration job,ShuffleScheduler scheduler,MergeManager merger,ShuffleClientMetrics metrics,Shuffle shuffle,SecretKey jobTokenSecret,boolean ifileReadAhead,int ifileReadAheadLength,CompressionCodec codec,TezInputContext inputContext) throws IOException {
  this.scheduler=scheduler;
  this.merger=merger;
  this.metrics=metrics;
  this.shuffle=shuffle;
  this.id=++nextId;
  this.jobTokenSecret=jobTokenSecret;
  ioErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.IO_ERROR.toString());
  wrongLengthErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.WRONG_LENGTH.toString());
  badIdErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.BAD_ID.toString());
  wrongMapErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.WRONG_MAP.toString());
  connectionErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.CONNECTION.toString());
  wrongReduceErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.WRONG_REDUCE.toString());
  this.ifileReadAhead=ifileReadAhead;
  this.ifileReadAheadLength=ifileReadAheadLength;
  if (codec != null) {
    this.codec=codec;
    this.decompressor=CodecPool.getDecompressor(codec);
  }
 else {
    this.codec=null;
    this.decompressor=null;
  }
  this.connectionTimeout=job.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_CONNECT_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_STALLED_COPY_TIMEOUT);
  this.readTimeout=job.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT);
  this.bufferSize=job.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_BUFFER_SIZE,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_BUFFER_SIZE);
  setName("String_Node_Str" + id);
  setDaemon(true);
synchronized (Fetcher.class) {
    sslShuffle=job.getBoolean(TezJobConfig.TEZ_RUNTIME_SHUFFLE_ENABLE_SSL,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_ENABLE_SSL);
    if (sslShuffle && sslFactory == null) {
      sslFactory=new SSLFactory(SSLFactory.Mode.CLIENT,job);
      try {
        sslFactory.init();
      }
 catch (      Exception ex) {
        sslFactory.destroy();
        throw new RuntimeException(ex);
      }
    }
  }
}

Fixed version (ground truth):
public Fetcher(Configuration job,ShuffleScheduler scheduler,MergeManager merger,ShuffleClientMetrics metrics,Shuffle shuffle,SecretKey jobTokenSecret,boolean ifileReadAhead,int ifileReadAheadLength,CompressionCodec codec,TezInputContext inputContext) throws IOException {
  this.scheduler=scheduler;
  this.merger=merger;
  this.metrics=metrics;
  this.shuffle=shuffle;
  this.id=++nextId;
  this.jobTokenSecret=jobTokenSecret;
  ioErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.IO_ERROR.toString());
  wrongLengthErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.WRONG_LENGTH.toString());
  badIdErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.BAD_ID.toString());
  wrongMapErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.WRONG_MAP.toString());
  connectionErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.CONNECTION.toString());
  wrongReduceErrs=inputContext.getCounters().findCounter(SHUFFLE_ERR_GRP_NAME,ShuffleErrors.WRONG_REDUCE.toString());
  this.ifileReadAhead=ifileReadAhead;
  this.ifileReadAheadLength=ifileReadAheadLength;
  if (codec != null) {
    this.codec=codec;
    this.decompressor=CodecPool.getDecompressor(codec);
  }
 else {
    this.codec=null;
    this.decompressor=null;
  }
  this.connectionTimeout=job.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_CONNECT_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_STALLED_COPY_TIMEOUT);
  this.readTimeout=job.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT);
  this.bufferSize=job.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_BUFFER_SIZE,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_BUFFER_SIZE);
  setName("String_Node_Str" + TezUtils.cleanVertexName(inputContext.getSourceVertexName()) + "String_Node_Str"+ id);
  setDaemon(true);
synchronized (Fetcher.class) {
    sslShuffle=job.getBoolean(TezJobConfig.TEZ_RUNTIME_SHUFFLE_ENABLE_SSL,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_ENABLE_SSL);
    if (sslShuffle && sslFactory == null) {
      sslFactory=new SSLFactory(SSLFactory.Mode.CLIENT,job);
      try {
        sslFactory.init();
      }
 catch (      Exception ex) {
        sslFactory.destroy();
        throw new RuntimeException(ex);
      }
    }
  }
}