Program: 90359
Project: 90359
Buggy source:
@Override public void init(){
  try {
    String[] addresses=address.split("String_Node_Str");
    List<JedisShardInfo> shardInfos=Lists.newArrayListWithCapacity(addresses.length);
    for (    String addr : addresses) {
      String[] pair=addr.split("String_Node_Str");
      shardInfos.add(new JedisShardInfo(pair[0],Integer.parseInt(pair[1])));
    }
    Map<String,String> properties=getProperties();
    JedisPoolConfig poolConfig=new JedisPoolConfig();
    poolConfig.setTestWhileIdle(true);
    poolConfig.setMaxIdle(6);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setMaxIdle(Integer.parseInt(properties.get("String_Node_Str")));
    }
    poolConfig.setMaxTotal(2000);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setMaxTotal(Integer.parseInt(properties.get("String_Node_Str")));
    }
    poolConfig.setMinEvictableIdleTimeMillis(60000);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setMinEvictableIdleTimeMillis(Long.parseLong("String_Node_Str"));
    }
    poolConfig.setTimeBetweenEvictionRunsMillis(30000);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setTimeBetweenEvictionRunsMillis(Long.parseLong("String_Node_Str"));
    }
    poolConfig.setNumTestsPerEvictionRun(-1);
    this.jedisPool=new ShardedJedisPool(poolConfig,shardInfos);
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str",e);
  }
}

Fixed version (ground truth):
@Override public void init(){
  try {
    String[] addresses=address.split("String_Node_Str");
    List<JedisShardInfo> shardInfos=Lists.newArrayListWithCapacity(addresses.length);
    JedisShardInfo shardInfo=null;
    for (    String addr : addresses) {
      int firstSplitPos=addr.indexOf(':');
      int secondSplitPos=addr.indexOf(':',firstSplitPos + 1);
      String host=addr.substring(0,firstSplitPos);
      if (secondSplitPos == -1) {
        int port=Integer.parseInt(addr.substring(firstSplitPos + 1));
        shardInfo=new JedisShardInfo(host,port);
      }
 else {
        int port=Integer.parseInt(addr.substring(firstSplitPos + 1,secondSplitPos));
        String pwd=addr.substring(secondSplitPos + 1);
        shardInfo=new JedisShardInfo(host,port);
        shardInfo.setPassword(pwd);
      }
      shardInfos.add(shardInfo);
    }
    Map<String,String> properties=getProperties();
    JedisPoolConfig poolConfig=new JedisPoolConfig();
    poolConfig.setTestWhileIdle(true);
    poolConfig.setMaxIdle(6);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setMaxIdle(Integer.parseInt(properties.get("String_Node_Str")));
    }
    poolConfig.setMaxTotal(2000);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setMaxTotal(Integer.parseInt(properties.get("String_Node_Str")));
    }
    poolConfig.setMinEvictableIdleTimeMillis(60000);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setMinEvictableIdleTimeMillis(Long.parseLong("String_Node_Str"));
    }
    poolConfig.setTimeBetweenEvictionRunsMillis(30000);
    if (properties.containsKey("String_Node_Str")) {
      poolConfig.setTimeBetweenEvictionRunsMillis(Long.parseLong("String_Node_Str"));
    }
    poolConfig.setNumTestsPerEvictionRun(-1);
    this.jedisPool=new ShardedJedisPool(poolConfig,shardInfos);
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str",e);
  }
}