public String requsetOpenIndex(String dbName, String tblName,
			String indexName, List<String> columnNames) throws HSJException {
		Channel channel = getChannelFromPool();
		
		if(!future.isSuccess()){
			//logger.error("connect error" +  future.getCause().getMessage());
			throw new RuntimeException("open table error, detail is:" + future.getCause().getMessage());
		}
		String indexId = String.valueOf(IDGenerator.nextId());
		
		//PacketFactory.getInstance().createAuthPacket(dbConfigLoader.load().getAuthKey());
		if(requsetAuth(null, dbConfigLoader.load().getAuthKey())){
			IPacket openIndexPacket = PacketFactory.getInstance().createOpenIndexPacket(indexId, dbName, tblName, indexName, columnNames);
			//ChannelFuture lastWriteFuture = channel.write(openIndexPacket.encode());
			
			//ChannelFuture lastWriteFuture = channel.write("P	1	test	user	PRIMARY last_name,first_name" + "\r\n");

			ResponseFuture responseFuture = new ResponseFuture(openIndexPacket, channel.getId());
			pendingRequest.put(channel.getId(), responseFuture);
			ChannelFuture lastWriteFuture = channel.write(openIndexPacket.encode());
			//lastWriteFuture.addListener(ChannelFutureListener.CLOSE_ON_FAILURE);
			boolean result = responseFuture.get(Constants.HS_TIMEOUT);
			connectionPool.offer(channel);
			
			if(result){
				return indexId;
			}
		}
		
		return null;
	}