Program: 112410
Project: 112410
Buggy source:
@Override public void start(CoprocessorEnvironment e) throws IOException {
  try {
    final RegionCoprocessorEnvironment env=(RegionCoprocessorEnvironment)e;
    String serverName=env.getServerName().getServerName();
    if (env.getConfiguration().getBoolean(CHECK_VERSION_CONF_KEY,true)) {
      String errormsg=Indexer.validateVersion(env.getHBaseVersion(),env.getConfiguration());
      if (errormsg != null) {
        IOException ioe=new IOException(errormsg);
        env.getRegionServerServices().abort(errormsg,ioe);
        throw ioe;
      }
    }
    this.builder=new IndexBuildManager(env);
    Configuration clonedConfig=PropertiesUtil.cloneConfig(e.getConfiguration());
    clonedConfig.setClass(RpcControllerFactory.CUSTOM_CONTROLLER_CONF_KEY,InterRegionServerIndexRpcControllerFactory.class,RpcControllerFactory.class);
    clonedConfig.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,env.getConfiguration().getInt(INDEX_WRITER_RPC_RETRIES_NUMBER,DEFAULT_INDEX_WRITER_RPC_RETRIES_NUMBER));
    clonedConfig.setInt(HConstants.HBASE_CLIENT_PAUSE,env.getConfiguration().getInt(INDEX_WRITER_RPC_PAUSE,DEFAULT_INDEX_WRITER_RPC_PAUSE));
    DelegateRegionCoprocessorEnvironment indexWriterEnv=new DelegateRegionCoprocessorEnvironment(clonedConfig,env);
    this.writer=new IndexWriter(indexWriterEnv,serverName + "String_Node_Str");
    this.rowLockWaitDuration=clonedConfig.getInt("String_Node_Str",DEFAULT_ROWLOCK_WAIT_DURATION);
    this.lockManager=new LockManager();
    this.metricSource=MetricsIndexerSourceFactory.getInstance().create();
    setSlowThresholds(e.getConfiguration());
    compactionConfig=PropertiesUtil.cloneConfig(e.getConfiguration());
    compactionConfig.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,e.getConfiguration().getInt(QueryServices.METADATA_WRITE_RETRIES_NUMBER,QueryServicesOptions.DEFAULT_METADATA_WRITE_RETRIES_NUMBER));
    compactionConfig.setInt(HConstants.HBASE_CLIENT_PAUSE,e.getConfiguration().getInt(QueryServices.METADATA_WRITE_RETRY_PAUSE,QueryServicesOptions.DEFAULT_METADATA_WRITE_RETRY_PAUSE));
    try {
      Class<? extends IndexFailurePolicy> policyClass=env.getConfiguration().getClass(INDEX_RECOVERY_FAILURE_POLICY_KEY,StoreFailuresInCachePolicy.class,IndexFailurePolicy.class);
      IndexFailurePolicy policy=policyClass.getConstructor(PerRegionIndexWriteCache.class).newInstance(failedIndexEdits);
      LOG.debug("String_Node_Str" + policy.getClass());
      recoveryWriter=new RecoveryIndexWriter(policy,indexWriterEnv,serverName + "String_Node_Str");
    }
 catch (    Exception ex) {
      throw new IOException("String_Node_Str",ex);
    }
  }
 catch (  NoSuchMethodError ex) {
    disabled=true;
    LOG.error("String_Node_Str",ex);
  }
}

Fixed version (ground truth):
@Override public void start(CoprocessorEnvironment e) throws IOException {
  try {
    final RegionCoprocessorEnvironment env=(RegionCoprocessorEnvironment)e;
    String serverName=env.getServerName().getServerName();
    if (env.getConfiguration().getBoolean(CHECK_VERSION_CONF_KEY,true)) {
      String errormsg=Indexer.validateVersion(env.getHBaseVersion(),env.getConfiguration());
      if (errormsg != null) {
        IOException ioe=new IOException(errormsg);
        throw ioe;
      }
    }
    this.builder=new IndexBuildManager(env);
    Configuration clonedConfig=PropertiesUtil.cloneConfig(e.getConfiguration());
    clonedConfig.setClass(RpcControllerFactory.CUSTOM_CONTROLLER_CONF_KEY,InterRegionServerIndexRpcControllerFactory.class,RpcControllerFactory.class);
    clonedConfig.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,env.getConfiguration().getInt(INDEX_WRITER_RPC_RETRIES_NUMBER,DEFAULT_INDEX_WRITER_RPC_RETRIES_NUMBER));
    clonedConfig.setInt(HConstants.HBASE_CLIENT_PAUSE,env.getConfiguration().getInt(INDEX_WRITER_RPC_PAUSE,DEFAULT_INDEX_WRITER_RPC_PAUSE));
    DelegateRegionCoprocessorEnvironment indexWriterEnv=new DelegateRegionCoprocessorEnvironment(clonedConfig,env);
    this.writer=new IndexWriter(indexWriterEnv,serverName + "String_Node_Str");
    this.rowLockWaitDuration=clonedConfig.getInt("String_Node_Str",DEFAULT_ROWLOCK_WAIT_DURATION);
    this.lockManager=new LockManager();
    this.metricSource=MetricsIndexerSourceFactory.getInstance().create();
    setSlowThresholds(e.getConfiguration());
    compactionConfig=PropertiesUtil.cloneConfig(e.getConfiguration());
    compactionConfig.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,e.getConfiguration().getInt(QueryServices.METADATA_WRITE_RETRIES_NUMBER,QueryServicesOptions.DEFAULT_METADATA_WRITE_RETRIES_NUMBER));
    compactionConfig.setInt(HConstants.HBASE_CLIENT_PAUSE,e.getConfiguration().getInt(QueryServices.METADATA_WRITE_RETRY_PAUSE,QueryServicesOptions.DEFAULT_METADATA_WRITE_RETRY_PAUSE));
    try {
      Class<? extends IndexFailurePolicy> policyClass=env.getConfiguration().getClass(INDEX_RECOVERY_FAILURE_POLICY_KEY,StoreFailuresInCachePolicy.class,IndexFailurePolicy.class);
      IndexFailurePolicy policy=policyClass.getConstructor(PerRegionIndexWriteCache.class).newInstance(failedIndexEdits);
      LOG.debug("String_Node_Str" + policy.getClass());
      recoveryWriter=new RecoveryIndexWriter(policy,indexWriterEnv,serverName + "String_Node_Str");
    }
 catch (    Exception ex) {
      throw new IOException("String_Node_Str",ex);
    }
  }
 catch (  NoSuchMethodError ex) {
    disabled=true;
    LOG.error("String_Node_Str",ex);
  }
}