Program: 57810
Project: 57810
Buggy source:
/** 
 * This method starts the data node with the specified conf.
 * @param conf - the configurationif conf's CONFIG_PROPERTY_SIMULATED property is set then a simulated storage based data node is created.
 * @param dataDirs - only for a non-simulated storage data node
 * @throws IOException
 */
void startDataNode(Configuration conf,List<StorageLocation> dataDirs,SecureResources resources) throws IOException {
  if (UserGroupInformation.isSecurityEnabled() && resources == null) {
    if (!conf.getBoolean("String_Node_Str",false)) {
      throw new RuntimeException("String_Node_Str" + "String_Node_Str");
    }
  }
  this.secureResources=resources;
  this.dataDirs=dataDirs;
  this.conf=conf;
  this.dnConf=new DNConf(conf);
  if (dnConf.maxLockedMemory > 0) {
    if (!NativeIO.POSIX.getCacheManipulator().verifyCanMlock()) {
      throw new RuntimeException(String.format("String_Node_Str" + "String_Node_Str",DFS_DATANODE_MAX_LOCKED_MEMORY_KEY));
    }
    long ulimit=NativeIO.POSIX.getCacheManipulator().getMemlockLimit();
    if (dnConf.maxLockedMemory > ulimit) {
      throw new RuntimeException(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str",DFS_DATANODE_MAX_LOCKED_MEMORY_KEY,dnConf.maxLockedMemory,ulimit));
    }
  }
  LOG.info("String_Node_Str" + dnConf.maxLockedMemory);
  storage=new DataStorage();
  registerMXBean();
  initDataXceiver(conf);
  startInfoServer(conf);
  pauseMonitor=new JvmPauseMonitor(conf);
  pauseMonitor.start();
  this.blockPoolTokenSecretManager=new BlockPoolTokenSecretManager();
  initIpcServer(conf);
  metrics=DataNodeMetrics.create(conf,getDisplayName());
  blockPoolManager=new BlockPoolManager(this);
  blockPoolManager.refreshNamenodes(conf);
  readaheadPool=ReadaheadPool.getInstance();
}

Fixed version (ground truth):
/** 
 * This method starts the data node with the specified conf.
 * @param conf - the configurationif conf's CONFIG_PROPERTY_SIMULATED property is set then a simulated storage based data node is created.
 * @param dataDirs - only for a non-simulated storage data node
 * @throws IOException
 */
void startDataNode(Configuration conf,List<StorageLocation> dataDirs,SecureResources resources) throws IOException {
  if (UserGroupInformation.isSecurityEnabled() && resources == null) {
    if (!conf.getBoolean("String_Node_Str",false)) {
      throw new RuntimeException("String_Node_Str" + "String_Node_Str");
    }
  }
  this.secureResources=resources;
  this.dataDirs=dataDirs;
  this.conf=conf;
  this.dnConf=new DNConf(conf);
  if (dnConf.maxLockedMemory > 0) {
    if (!NativeIO.POSIX.getCacheManipulator().verifyCanMlock()) {
      throw new RuntimeException(String.format("String_Node_Str" + "String_Node_Str",DFS_DATANODE_MAX_LOCKED_MEMORY_KEY));
    }
    long ulimit=NativeIO.POSIX.getCacheManipulator().getMemlockLimit();
    if (dnConf.maxLockedMemory > ulimit) {
      throw new RuntimeException(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str",DFS_DATANODE_MAX_LOCKED_MEMORY_KEY,dnConf.maxLockedMemory,ulimit));
    }
  }
  LOG.info("String_Node_Str" + dnConf.maxLockedMemory);
  storage=new DataStorage();
  registerMXBean();
  initDataXceiver(conf);
  startInfoServer(conf);
  pauseMonitor=new JvmPauseMonitor(conf);
  pauseMonitor.start();
  this.blockPoolTokenSecretManager=new BlockPoolTokenSecretManager();
  dnUserName=UserGroupInformation.getCurrentUser().getShortUserName();
  LOG.info("String_Node_Str" + dnUserName);
  LOG.info("String_Node_Str" + supergroup);
  initIpcServer(conf);
  metrics=DataNodeMetrics.create(conf,getDisplayName());
  blockPoolManager=new BlockPoolManager(this);
  blockPoolManager.refreshNamenodes(conf);
  readaheadPool=ReadaheadPool.getInstance();
}