Program: 85047
Project: 85047
Buggy source:
public RedisRegistry(URL url){
  super(url);
  if (url.isAnyHost()) {
    throw new IllegalStateException("String_Node_Str");
  }
  GenericObjectPoolConfig config=new GenericObjectPoolConfig();
  config.setTestOnBorrow(url.getParameter("String_Node_Str",true));
  config.setTestOnReturn(url.getParameter("String_Node_Str",false));
  config.setTestWhileIdle(url.getParameter("String_Node_Str",false));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMaxIdle(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMinIdle(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMaxTotal(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMaxTotal(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",url.getParameter("String_Node_Str",0)) > 0)   config.setMaxWaitMillis(url.getParameter("String_Node_Str",url.getParameter("String_Node_Str",0)));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setNumTestsPerEvictionRun(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setTimeBetweenEvictionRunsMillis(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMinEvictableIdleTimeMillis(url.getParameter("String_Node_Str",0));
  String cluster=url.getParameter("String_Node_Str","String_Node_Str");
  if (!"String_Node_Str".equals(cluster) && !"String_Node_Str".equals(cluster)) {
    throw new IllegalArgumentException("String_Node_Str" + cluster + "String_Node_Str");
  }
  replicate="String_Node_Str".equals(cluster);
  List<String> addresses=new ArrayList<String>();
  addresses.add(url.getAddress());
  String[] backups=url.getParameter(Constants.BACKUP_KEY,new String[0]);
  if (backups != null && backups.length > 0) {
    addresses.addAll(Arrays.asList(backups));
  }
  String password=url.getPassword();
  for (  String address : addresses) {
    int i=address.indexOf(':');
    String host;
    int port;
    if (i > 0) {
      host=address.substring(0,i);
      port=Integer.parseInt(address.substring(i + 1));
    }
 else {
      host=address;
      port=DEFAULT_REDIS_PORT;
    }
    if (StringUtils.isEmpty(password)) {
      this.jedisPools.put(address,new JedisPool(config,host,port,url.getParameter(Constants.TIMEOUT_KEY,Constants.DEFAULT_TIMEOUT),null,url.getParameter("String_Node_Str",0)));
    }
 else {
      this.jedisPools.put(address,new JedisPool(config,host,port,url.getParameter(Constants.TIMEOUT_KEY,Constants.DEFAULT_TIMEOUT),password,url.getParameter("String_Node_Str",0)));
    }
  }
  this.reconnectPeriod=url.getParameter(Constants.REGISTRY_RECONNECT_PERIOD_KEY,Constants.DEFAULT_REGISTRY_RECONNECT_PERIOD);
  String group=url.getParameter(Constants.GROUP_KEY,DEFAULT_ROOT);
  if (!group.startsWith(Constants.PATH_SEPARATOR)) {
    group=Constants.PATH_SEPARATOR + group;
  }
  if (!group.endsWith(Constants.PATH_SEPARATOR)) {
    group=group + Constants.PATH_SEPARATOR;
  }
  this.root=group;
  this.expirePeriod=url.getParameter(Constants.SESSION_TIMEOUT_KEY,Constants.DEFAULT_SESSION_TIMEOUT);
  this.expireFuture=expireExecutor.scheduleWithFixedDelay(new Runnable(){
    @Override public void run(){
      try {
        deferExpired();
      }
 catch (      Throwable t) {
        logger.error("String_Node_Str" + t.getMessage(),t);
      }
    }
  }
,expirePeriod / 2,expirePeriod / 2,TimeUnit.MILLISECONDS);
}

Fixed version (ground truth):
public RedisRegistry(URL url){
  super(url);
  if (url.isAnyHost()) {
    throw new IllegalStateException("String_Node_Str");
  }
  GenericObjectPoolConfig config=new GenericObjectPoolConfig();
  config.setTestOnBorrow(url.getParameter("String_Node_Str",true));
  config.setTestOnReturn(url.getParameter("String_Node_Str",false));
  config.setTestWhileIdle(url.getParameter("String_Node_Str",false));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMaxIdle(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMinIdle(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMaxTotal(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMaxTotal(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",url.getParameter("String_Node_Str",0)) > 0)   config.setMaxWaitMillis(url.getParameter("String_Node_Str",url.getParameter("String_Node_Str",0)));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setNumTestsPerEvictionRun(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setTimeBetweenEvictionRunsMillis(url.getParameter("String_Node_Str",0));
  if (url.getParameter("String_Node_Str",0) > 0)   config.setMinEvictableIdleTimeMillis(url.getParameter("String_Node_Str",0));
  String cluster=url.getParameter("String_Node_Str","String_Node_Str");
  if (!"String_Node_Str".equals(cluster) && !"String_Node_Str".equals(cluster)) {
    throw new IllegalArgumentException("String_Node_Str" + cluster + "String_Node_Str");
  }
  replicate="String_Node_Str".equals(cluster);
  List<String> addresses=new ArrayList<String>();
  addresses.add(url.getAddress());
  String[] backups=url.getParameter(Constants.BACKUP_KEY,new String[0]);
  if (backups != null && backups.length > 0) {
    addresses.addAll(Arrays.asList(backups));
  }
  for (  String address : addresses) {
    int i=address.indexOf(':');
    String host;
    int port;
    if (i > 0) {
      host=address.substring(0,i);
      port=Integer.parseInt(address.substring(i + 1));
    }
 else {
      host=address;
      port=DEFAULT_REDIS_PORT;
    }
    this.jedisPools.put(address,new JedisPool(config,host,port,url.getParameter(Constants.TIMEOUT_KEY,Constants.DEFAULT_TIMEOUT),StringUtils.isEmpty(url.getPassword()) ? null : url.getPassword(),url.getParameter("String_Node_Str",0)));
  }
  this.reconnectPeriod=url.getParameter(Constants.REGISTRY_RECONNECT_PERIOD_KEY,Constants.DEFAULT_REGISTRY_RECONNECT_PERIOD);
  String group=url.getParameter(Constants.GROUP_KEY,DEFAULT_ROOT);
  if (!group.startsWith(Constants.PATH_SEPARATOR)) {
    group=Constants.PATH_SEPARATOR + group;
  }
  if (!group.endsWith(Constants.PATH_SEPARATOR)) {
    group=group + Constants.PATH_SEPARATOR;
  }
  this.root=group;
  this.expirePeriod=url.getParameter(Constants.SESSION_TIMEOUT_KEY,Constants.DEFAULT_SESSION_TIMEOUT);
  this.expireFuture=expireExecutor.scheduleWithFixedDelay(new Runnable(){
    @Override public void run(){
      try {
        deferExpired();
      }
 catch (      Throwable t) {
        logger.error("String_Node_Str" + t.getMessage(),t);
      }
    }
  }
,expirePeriod / 2,expirePeriod / 2,TimeUnit.MILLISECONDS);
}