Program: 85048
Project: 85048
Buggy source:
@Override public <T>Invoker<T> refer(final Class<T> type,final URL url) throws RpcException {
  try {
    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",0) > 0)     config.setMaxWaitMillis(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));
    final JedisPool jedisPool=new JedisPool(config,url.getHost(),url.getPort(DEFAULT_PORT),url.getParameter(Constants.TIMEOUT_KEY,Constants.DEFAULT_TIMEOUT));
    final int expiry=url.getParameter("String_Node_Str",0);
    final String get=url.getParameter("String_Node_Str","String_Node_Str");
    final String set=url.getParameter("String_Node_Str",Map.class.equals(type) ? "String_Node_Str" : "String_Node_Str");
    final String delete=url.getParameter("String_Node_Str",Map.class.equals(type) ? "String_Node_Str" : "String_Node_Str");
    return new AbstractInvoker<T>(type,url){
      @Override protected Result doInvoke(      Invocation invocation) throws Throwable {
        Jedis jedis=null;
        try {
          jedis=jedisPool.getResource();
          if (get.equals(invocation.getMethodName())) {
            if (invocation.getArguments().length != 1) {
              throw new IllegalArgumentException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url);
            }
            byte[] value=jedis.get(String.valueOf(invocation.getArguments()[0]).getBytes());
            if (value == null) {
              return new RpcResult();
            }
            ObjectInput oin=getSerialization(url).deserialize(url,new ByteArrayInputStream(value));
            return new RpcResult(oin.readObject());
          }
 else           if (set.equals(invocation.getMethodName())) {
            if (invocation.getArguments().length != 2) {
              throw new IllegalArgumentException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url);
            }
            byte[] key=String.valueOf(invocation.getArguments()[0]).getBytes();
            ByteArrayOutputStream output=new ByteArrayOutputStream();
            ObjectOutput value=getSerialization(url).serialize(url,output);
            value.writeObject(invocation.getArguments()[1]);
            jedis.set(key,output.toByteArray());
            if (expiry > 1000) {
              jedis.expire(key,expiry / 1000);
            }
            return new RpcResult();
          }
 else           if (delete.equals(invocation.getMethodName())) {
            if (invocation.getArguments().length != 1) {
              throw new IllegalArgumentException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url);
            }
            jedis.del(String.valueOf(invocation.getArguments()[0]).getBytes());
            return new RpcResult();
          }
 else {
            throw new UnsupportedOperationException("String_Node_Str" + invocation.getMethodName() + "String_Node_Str");
          }
        }
 catch (        Throwable t) {
          RpcException re=new RpcException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url+ "String_Node_Str"+ t.getMessage(),t);
          if (t instanceof TimeoutException || t instanceof SocketTimeoutException) {
            re.setCode(RpcException.TIMEOUT_EXCEPTION);
          }
 else           if (t instanceof JedisConnectionException || t instanceof IOException) {
            re.setCode(RpcException.NETWORK_EXCEPTION);
          }
 else           if (t instanceof JedisDataException) {
            re.setCode(RpcException.SERIALIZATION_EXCEPTION);
          }
          throw re;
        }
 finally {
          if (jedis != null) {
            try {
              jedis.close();
            }
 catch (            Throwable t) {
              logger.warn("String_Node_Str" + t.getMessage(),t);
            }
          }
        }
      }
      @Override public void destroy(){
        super.destroy();
        try {
          jedisPool.destroy();
        }
 catch (        Throwable e) {
          logger.warn(e.getMessage(),e);
        }
      }
    }
;
  }
 catch (  Throwable t) {
    throw new RpcException("String_Node_Str" + type.getName() + "String_Node_Str"+ url+ "String_Node_Str"+ t.getMessage(),t);
  }
}

Fixed version (ground truth):
@Override public <T>Invoker<T> refer(final Class<T> type,final URL url) throws RpcException {
  try {
    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",0) > 0)     config.setMaxWaitMillis(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));
    final JedisPool jedisPool=new JedisPool(config,url.getHost(),url.getPort(DEFAULT_PORT),url.getParameter(Constants.TIMEOUT_KEY,Constants.DEFAULT_TIMEOUT),StringUtils.isBlank(url.getPassword()) ? null : url.getPassword(),url.getParameter("String_Node_Str",0));
    final int expiry=url.getParameter("String_Node_Str",0);
    final String get=url.getParameter("String_Node_Str","String_Node_Str");
    final String set=url.getParameter("String_Node_Str",Map.class.equals(type) ? "String_Node_Str" : "String_Node_Str");
    final String delete=url.getParameter("String_Node_Str",Map.class.equals(type) ? "String_Node_Str" : "String_Node_Str");
    return new AbstractInvoker<T>(type,url){
      @Override protected Result doInvoke(      Invocation invocation) throws Throwable {
        Jedis jedis=null;
        try {
          jedis=jedisPool.getResource();
          if (get.equals(invocation.getMethodName())) {
            if (invocation.getArguments().length != 1) {
              throw new IllegalArgumentException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url);
            }
            byte[] value=jedis.get(String.valueOf(invocation.getArguments()[0]).getBytes());
            if (value == null) {
              return new RpcResult();
            }
            ObjectInput oin=getSerialization(url).deserialize(url,new ByteArrayInputStream(value));
            return new RpcResult(oin.readObject());
          }
 else           if (set.equals(invocation.getMethodName())) {
            if (invocation.getArguments().length != 2) {
              throw new IllegalArgumentException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url);
            }
            byte[] key=String.valueOf(invocation.getArguments()[0]).getBytes();
            ByteArrayOutputStream output=new ByteArrayOutputStream();
            ObjectOutput value=getSerialization(url).serialize(url,output);
            value.writeObject(invocation.getArguments()[1]);
            jedis.set(key,output.toByteArray());
            if (expiry > 1000) {
              jedis.expire(key,expiry / 1000);
            }
            return new RpcResult();
          }
 else           if (delete.equals(invocation.getMethodName())) {
            if (invocation.getArguments().length != 1) {
              throw new IllegalArgumentException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url);
            }
            jedis.del(String.valueOf(invocation.getArguments()[0]).getBytes());
            return new RpcResult();
          }
 else {
            throw new UnsupportedOperationException("String_Node_Str" + invocation.getMethodName() + "String_Node_Str");
          }
        }
 catch (        Throwable t) {
          RpcException re=new RpcException("String_Node_Str" + type.getName() + "String_Node_Str"+ invocation.getMethodName()+ "String_Node_Str"+ url+ "String_Node_Str"+ t.getMessage(),t);
          if (t instanceof TimeoutException || t instanceof SocketTimeoutException) {
            re.setCode(RpcException.TIMEOUT_EXCEPTION);
          }
 else           if (t instanceof JedisConnectionException || t instanceof IOException) {
            re.setCode(RpcException.NETWORK_EXCEPTION);
          }
 else           if (t instanceof JedisDataException) {
            re.setCode(RpcException.SERIALIZATION_EXCEPTION);
          }
          throw re;
        }
 finally {
          if (jedis != null) {
            try {
              jedis.close();
            }
 catch (            Throwable t) {
              logger.warn("String_Node_Str" + t.getMessage(),t);
            }
          }
        }
      }
      @Override public void destroy(){
        super.destroy();
        try {
          jedisPool.destroy();
        }
 catch (        Throwable e) {
          logger.warn(e.getMessage(),e);
        }
      }
    }
;
  }
 catch (  Throwable t) {
    throw new RpcException("String_Node_Str" + type.getName() + "String_Node_Str"+ url+ "String_Node_Str"+ t.getMessage(),t);
  }
}