lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Suril Shah <suril.shah...@gmail.com>
Subject How to use Parallel SQL Interface when basic auth is enabled on Solr cluster
Date Wed, 24 Jul 2019 08:49:53 GMT
Hi,
I am using Solr Version 7.6.0 where Basic Authentication is enabled. I am
trying to use Parallel SQL to run some SQL queries.

This is the code snippet that I am using to connect to Solr and run some
SQL queries on it. This works when authentication is not enabled on the
Solr cluster.

   public Connection getSolrSqlJDBCConnection(String aggregationMode)
throws SQLException
{

    String solrZkConnString = "<zk_fqdn>:2181";

    String collection = "customer";

    String numWorkers = "2";

    Connection solrSqlClientConn = null;

    try {

      solrSqlClientConn = DriverManager.*getConnection*("jdbc:solr://" +
solrZkConnString + "?collection="

          + collection + "&aggregationMode=" + aggregationMode +
"&numWorkers=" + numWorkers);



    } catch (SQLException e) {

      throw e;

    }

    return solrSqlClientConn;

  }



  public ResultSet executeSolrSqlStatement(String querySqlString, String
aggregationMode) throwsSQLException {

    try {

      Connection solrSqlJdbcConn =
getSolrSqlJDBCConnection(aggregationMode);

      Statement stmt = solrSqlJdbcConn.createStatement();

      ResultSet rs = stmt.executeQuery(querySqlString);

      solrSqlJdbcConn.close();

      return rs;

    } catch (SQLException e) {

      throw e;

    }

  }



   public void testSelectOnIndex() throws SQLException {

     String owner_id = "3cfc7734-e4b4-4c9b-b91e-44c8c5943fb0";

    String solrSqlString = "select customer_id_s, customer_name_s,
country_s, city_s, postal_code_s, address_s from customer where owner_id_s
= '"+owner_id+"'";

    System.*out*.println("solrSqlString = "+solrSqlString);

    try {

      ResultSet sqlResultSet = executeSolrSqlStatement(solrSqlString,
"map_reduce");

      while (sqlResultSet.next()) {

        System.*out*.println("--- customer_id ---" +
sqlResultSet.getString("customer_id_s"));

        System.*out*.println("--- customer_name ---" +
sqlResultSet.getString("customer_name_s"));

        System.*out*.println("--- country ---" +
sqlResultSet.getString("country_s"));

        System.*out*.println("--- city ---" +
sqlResultSet.getString("city_s"));

        System.*out*.println("--- postalcode ---" +
sqlResultSet.getString("postal_code_s"));

        System.*out*.println("--- address ---" +
sqlResultSet.getString("address_s"));

      }

    } catch (SQLException e) {

      e.printStackTrace();

    }

  }


When authentication is enabled I tried adding the username and password
JDBC connection string.

Replaced one line in the getSolrSqlJDBCConnection() method:

       solrSqlClientConn = DriverManager.*getConnection*("jdbc:solr://" +
solrZkConnString + "?collection=" + collection + "&aggregationMode=" +
aggregationMode + "&numWorkers=" + numWorkers,"<UserName>","<Password>");


The <UserName> and <Password> here will be the username password for Solr.


On making the above change, we are getting the following error:



java.sql.SQLException: java.sql.SQLException: java.io.IOException: -->
http://<Solr_IP>:8983/solr/customer_shard1_replica_n2/: An exception has
occurred on the server, refer to server log for details.

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.sql.StatementImpl.executeQueryImpl(StatementImpl.java:74)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.sql.StatementImpl.executeQuery(StatementImpl.java:111)

at io.strati.search.Test.executeSolrSqlStatement(Test.java:54)

at io.strati.search.Test.main(Test.java:20)

Caused by: java.sql.SQLException: java.io.IOException: --> http://
<Solr_IP>:8983/solr/customer_shard1_replica_n2/: An exception has occurred
on the server, refer to server log for details.

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.sql.ResultSetImpl.<init>(ResultSetImpl.java:83)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.sql.StatementImpl.executeQueryImpl(StatementImpl.java:71)

... 3 more

Caused by: java.io.IOException: --> http://
<Solr_IP>:8983/solr/customer_shard1_replica_n2/: An exception has occurred
on the server, refer to server log for details.

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.stream.SolrStream.read(SolrStream.java:218)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.stream.PushBackStream.read(PushBackStream.java:88)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.sql.ResultSetImpl.<init>(ResultSetImpl.java:73)

... 4 more

Caused by: io.strati.libs.forklift.org.noggit.JSONParser$ParseException:
JSON Parse Error: char=<,position=0 AFTER='<' BEFORE='html> <head> <meta
http-equiv="Content-'

at io.strati.libs.forklift.org.noggit.JSONParser.err(JSONParser.java:419)

at
io.strati.libs.forklift.org.noggit.JSONParser.handleNonDoubleQuoteString(JSONParser.java:775)

at io.strati.libs.forklift.org.noggit.JSONParser.next(JSONParser.java:981)

at
io.strati.libs.forklift.org.noggit.JSONParser.nextEvent(JSONParser.java:1026)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.stream.JSONTupleStream.expect(JSONTupleStream.java:97)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.stream.JSONTupleStream.advanceToDocs(JSONTupleStream.java:179)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.stream.JSONTupleStream.next(JSONTupleStream.java:77)

at
io.strati.libs.forklift.org.apache.solr.client.solrj.io.stream.SolrStream.read(SolrStream.java:187)

... 6 more


Has anyone experienced any similar issues? Any thoughts or suggestions on
this would be really helpful.


Thanks,

Suril

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message