code: public String getMetadataInJson()
  			throws SQLException {
  		try {
  			return getMetadataInJsonFunc();
  		} catch (TException e) {
  			boolean flag = connection.reconnect();
  			this.client = connection.client;
  			if (flag) {
  				try {
  					return getMetadataInJsonFunc();
  				} catch (TException e2) {
  					throw new SQLException("Failed to fetch all metadata in json "
  							+ "after reconnecting. Please check the server status.");
  				}
  			} else {
  				throw new SQLException("Failed to reconnect to the server "
  						+ "when fetching all metadata in json. Please check the server status.");
  			}
  		}
  	}
docs: /*
  recommend using getMetadataInJson() instead of toString()