Program: 89980
Project: 89980
Buggy source:
/** 
 * Get a JMXConnector to a given host and port, using login and password.
 * @param hostName The host to attempt to connect to.
 * @param jmxPort The port on the host to connect to (a non-negative number)
 * @param login The login name to authenticate as (typically "controlRole"or "monitorRole".
 * @param password The password for JMX access
 * @return A JMX connector to the given host and port, using default RMI
 */
public static JMXConnector getJMXConnector(String hostName,int jmxPort,final String login,final String password){
  ArgumentNotValid.checkNotNullOrEmpty(hostName,"String_Node_Str");
  ArgumentNotValid.checkNotNegative(jmxPort,"String_Node_Str");
  ArgumentNotValid.checkNotNullOrEmpty(login,"String_Node_Str");
  ArgumentNotValid.checkNotNullOrEmpty(password,"String_Node_Str");
  JMXServiceURL rmiurl=getUrl(hostName,jmxPort,-1);
  Map<String,?> environment=(Map<String,?>)packageCredentials(login,password);
  Throwable lastException;
  int retries=0;
  do {
    try {
      return JMXConnectorFactory.connect(rmiurl,environment);
    }
 catch (    IOException e) {
      lastException=e;
      if (retries < MAX_TRIES && e.getCause() != null && (e.getCause() instanceof ServiceUnavailableException || e.getCause() instanceof SocketTimeoutException)) {
        TimeUtils.exponentialBackoffSleep(retries);
        continue;
      }
      break;
    }
  }
 while (retries++ < MAX_TRIES);
  throw new IOFailure("String_Node_Str" + rmiurl + "String_Node_Str"+ retries+ "String_Node_Str",lastException);
}

Fixed version (ground truth):
/** 
 * Get a JMXConnector to a given host and port, using login and password.
 * @param hostName The host to attempt to connect to.
 * @param jmxPort The port on the host to connect to (a non-negative number)
 * @param login The login name to authenticate as (typically "controlRole"or "monitorRole".
 * @param password The password for JMX access
 * @return A JMX connector to the given host and port, using default RMI
 */
public static JMXConnector getJMXConnector(String hostName,int jmxPort,final String login,final String password){
  ArgumentNotValid.checkNotNullOrEmpty(hostName,"String_Node_Str");
  ArgumentNotValid.checkNotNegative(jmxPort,"String_Node_Str");
  ArgumentNotValid.checkNotNullOrEmpty(login,"String_Node_Str");
  ArgumentNotValid.checkNotNullOrEmpty(password,"String_Node_Str");
  JMXServiceURL rmiurl=getUrl(hostName,jmxPort,-1);
  Map<String,?> environment=packageCredentials(login,password);
  Throwable lastException;
  int retries=0;
  do {
    try {
      return JMXConnectorFactory.connect(rmiurl,environment);
    }
 catch (    IOException e) {
      lastException=e;
      if (retries < MAX_TRIES && e.getCause() != null && (e.getCause() instanceof ServiceUnavailableException || e.getCause() instanceof SocketTimeoutException)) {
        TimeUtils.exponentialBackoffSleep(retries,Calendar.SECOND);
        continue;
      }
      break;
    }
  }
 while (retries++ < MAX_TRIES);
  throw new IOFailure("String_Node_Str" + rmiurl + "String_Node_Str"+ retries+ "String_Node_Str"+ MAX_TRIES+ "String_Node_Str"+ lastException.getCause().getClass().getName(),lastException);
}