The issue is that in 6.6 CloudSolrStream is expecting a StreamContext to be
set. So you'll need to update your code to do this. This was part of
changes made to make streaming work in non-SolrCloud environments.

You also need to create a SolrClientCache which caches the SolrClients.

Example:

SolrClientCache cache = new SolrClientCache();

StreamContext streamContext = new StreamContext();

streamContext.setSolrClientCache(cache);

CloudSolrStream stream = new CloudSolrStream(...);
stream.setStreamContext(streamContext);
stream.open();
....

The SolrClientCache can be shared by multiple requests and should be closed
when the application exits.






















Joel Bernstein
http://joelsolr.blogspot.com/

On Fri, Jun 16, 2017 at 2:17 AM, Aman Deep Singh <amandeep.coo...@gmail.com>
wrote:

> Hi,
> I think their is a possible bug in Solrj version 6.6.0 ,as streaming is not
> working
> as i have a piece of code
>
> public Set<String> getAllIds(String requestId, String field) {
>     LOG.info("Now Trying to fetch all the ids from SOLR for request Id
> {}", requestId);
>     Map props = new HashMap();
>     props.put("q", field + ":*");
>     props.put("qt", "/export");
>     props.put("sort", field + " asc");
>     props.put("fl", field);
>     Set<String> idSet = new HashSet<>();
>     try (CloudSolrStream cloudSolrStream = new
> CloudSolrStream(cloudSolrClient.getZkHost(),
>             cloudSolrClient.getDefaultCollection(), new
> MapSolrParams(props))) {
>         cloudSolrStream.open();
>         while (true) {
>             Tuple tuple = cloudSolrStream.read();
>             if (tuple.EOF) {
>                 break;
>             }
>             idSet.add(tuple.getString(field));
>         }
>         return idSet;
>     } catch (IOException ex) {
>         LOG.error("Error while fetching the ids from SOLR for request
> Id {} ", requestId, ex);
>     }
>     return Collections.emptySet();
> }
>
>
> This is working in the Solrj 6.5.1 but now it start throwing Error
> after upgrading to solrj-6.6.0
>
> java.io.IOException: java.lang.NullPointerException
>         at org.apache.solr.client.solrj.io.stream.CloudSolrStream.
> constructStreams(CloudSolrStream.java:408)
> ~[solr-solrj-6.6.0.jar:6.6.0 5c7a7b65d2aa7ce5ec96458315c661a18b320241
> - ishan - 2017-05-30 07:32:54]
>         at org.apache.solr.client.solrj.io.stream.CloudSolrStream.
> open(CloudSolrStream.java:299)
> ~[solr-solrj-6.6.0.jar:6.6.0 5c7a7b65d2aa7ce5ec96458315c661a18b320241
> - ishan - 2017-05-30 07:32:54]
>
>
> Thanks,
>
> Aman Deep Singh
>

Reply via email to