Re: JSON facets, count a long or an integer in cloud and non-cloud modes

2016-03-22 Thread Yonik Seeley
Much of the merging / client code in Solr (not just the JSON Facets)
uses things like
((Number)count).longValue()
to handle either int or long values.

-Yonik


On Tue, Mar 22, 2016 at 4:46 AM, Markus Jelsma
 wrote:
> Hello,
>
> Using SolrJ i built a method that consumes output produced by JSON facets, it 
> also checks the count before further processing the output:
>
> 
> 
> 
>   49
>   
> 
>   
>
> This is the code reading the count value via SolrJ:
>
> QueryResponse response = sourceClient.query(query);
> NamedList jsonFacets = (NamedList)response.getResponse().get("facets");
> int totalOccurences = (int)jsonFacets.get("count");
>
> The problem is, this code doesn't work in unit tests, it throws a:
> java.lang.ClassCastException: java.lang.Long cannot be cast to 
> java.lang.Integer!?
>
> But why it is an integer right? Anyway, i change the totalOccurences and the 
> cast to a long and the unit tests runs just fine. But when actually running 
> the code, i suddenly get another cast exception at exactly the same line.
> java.lang.ClassCastException: java.lang.Integer cannot be cast to 
> java.lang.Long
>
> What is going on? The only difference is that the unit tests runs in cloud 
> mode via AbstractFullDistribZkTestBase, but i run the code in a local dev 
> non-cloud mode. I haven't noticed this behaviour anywhere else although i 
> have many unit tests consuming lots of different pieces of Solr output, and 
> all that code runs fine in non-cloud mode too.
>
> Is this to be expected, normal? Did i catch another bug?
>
> Thanks!
> Markus


Re: JSON facets, count a long or an integer in cloud and non-cloud modes

2016-03-22 Thread Yago Riveiro
I have a felling that this is related with the number of nodes of the cluster.  
  
My dev runs in  cloud mode but only has one node, production has 12, and the
version is the same.  

\--

  

/Yago Riveiro

> On Mar 22 2016, at 9:13 am, Markus Jelsma markus.jel...@openindex.io
wrote:  

>

> I'm now using instanceof as ugly work around but i'd prefer a decent
solution.  
M

>

>  
  
\-Original message-  
 From:Yago Riveiro yago.rive...@gmail.com  
 Sent: Tuesday 22nd March 2016 9:52  
 To: solr-user solr-user@lucene.apache.org; solr-
u...@lucene.apache.org  
 Subject: Re: JSON facets, count a long or an integer in cloud and non-
cloud modes  
  
 I have the same problem with a custom response writer.  
  
 In production works but in my dev doesn't and are the same version 5.3.1  
  
 \--  
 Yago Riveiro  
  
 On 22 Mar 2016 08:47 +, Markus
Jelsmamarkus.jel...@openindex.io, wrote:  
  Hello,  
   
  Using SolrJ i built a method that consumes output produced by JSON
facets, it also checks the count before further processing the output:  
   
  result name="response" numFound="49" start="0"  
  /result  
  lst name="facets"  
  int name="count"49/int  
  lst name="by_day"  
  arr name="buckets"  
  lst  
   
  This is the code reading the count value via SolrJ:  
   
  QueryResponse response = sourceClient.query(query);  
  NamedList jsonFacets =
(NamedList)response.getResponse().get("facets");  
  int totalOccurences = (int)jsonFacets.get("count");  
   
  The problem is, this code doesn't work in unit tests, it throws a:  
  java.lang.ClassCastException: java.lang.Long cannot be cast to
java.lang.Integer!?  
   
  But why it is an integer right? Anyway, i change the totalOccurences
and the cast to a long and the unit tests runs just fine. But when actually
running the code, i suddenly get another cast exception at exactly the same
line.  
  java.lang.ClassCastException: java.lang.Integer cannot be cast to
java.lang.Long  
   
  What is going on? The only difference is that the unit tests runs in
cloud mode via AbstractFullDistribZkTestBase, but i run the code in a local
dev non-cloud mode. I haven't noticed this behaviour anywhere else although i
have many unit tests consuming lots of different pieces of Solr output, and
all that code runs fine in non-cloud mode too.  
   
  Is this to be expected, normal? Did i catch another bug?  
   
  Thanks!  
  Markus  




RE: JSON facets, count a long or an integer in cloud and non-cloud modes

2016-03-22 Thread Markus Jelsma
I'm now using instanceof as ugly work around but i'd prefer a decent solution.
M

 
 
-Original message-
> From:Yago Riveiro 
> Sent: Tuesday 22nd March 2016 9:52
> To: solr-user ; solr-user@lucene.apache.org
> Subject: Re: JSON facets, count a long or an integer in cloud and non-cloud 
> modes
> 
> I have the same problem with a custom response writer.
> 
> In production works but in my dev doesn't and are the same version 5.3.1
> 
> --
> Yago Riveiro
> 
> On 22 Mar 2016 08:47 +, Markus Jelsma, wrote:
> > Hello,
> > 
> > Using SolrJ i built a method that consumes output produced by JSON facets, 
> > it also checks the count before further processing the output:
> > 
> >  >  >  > 49 >  >  >  > 
> > This is the code reading the count value via SolrJ:
> > 
> > QueryResponse response = sourceClient.query(query);
> > NamedList jsonFacets = (NamedList)response.getResponse().get("facets");
> > int totalOccurences = (int)jsonFacets.get("count");
> > 
> > The problem is, this code doesn't work in unit tests, it throws a:
> > java.lang.ClassCastException: java.lang.Long cannot be cast to 
> > java.lang.Integer!?
> > 
> > But why it is an integer right? Anyway, i change the totalOccurences and 
> > the cast to a long and the unit tests runs just fine. But when actually 
> > running the code, i suddenly get another cast exception at exactly the same 
> > line.
> > java.lang.ClassCastException: java.lang.Integer cannot be cast to 
> > java.lang.Long
> > 
> > What is going on? The only difference is that the unit tests runs in cloud 
> > mode via AbstractFullDistribZkTestBase, but i run the code in a local dev 
> > non-cloud mode. I haven't noticed this behaviour anywhere else although i 
> > have many unit tests consuming lots of different pieces of Solr output, and 
> > all that code runs fine in non-cloud mode too.
> > 
> > Is this to be expected, normal? Did i catch another bug?
> > 
> > Thanks!
> > Markus
> 


Re: JSON facets, count a long or an integer in cloud and non-cloud modes

2016-03-22 Thread Yago Riveiro
I have the same problem with a custom response writer.

In production works but in my dev doesn't and are the same version 5.3.1

--
Yago Riveiro

On 22 Mar 2016 08:47 +, Markus Jelsma, wrote:
> Hello,
> 
> Using SolrJ i built a method that consumes output produced by JSON facets, it 
> also checks the count before further processing the output:
> 
>49
> This is the code reading the count value via SolrJ:
> 
> QueryResponse response = sourceClient.query(query);
> NamedList jsonFacets = (NamedList)response.getResponse().get("facets");
> int totalOccurences = (int)jsonFacets.get("count");
> 
> The problem is, this code doesn't work in unit tests, it throws a:
> java.lang.ClassCastException: java.lang.Long cannot be cast to 
> java.lang.Integer!?
> 
> But why it is an integer right? Anyway, i change the totalOccurences and the 
> cast to a long and the unit tests runs just fine. But when actually running 
> the code, i suddenly get another cast exception at exactly the same line.
> java.lang.ClassCastException: java.lang.Integer cannot be cast to 
> java.lang.Long
> 
> What is going on? The only difference is that the unit tests runs in cloud 
> mode via AbstractFullDistribZkTestBase, but i run the code in a local dev 
> non-cloud mode. I haven't noticed this behaviour anywhere else although i 
> have many unit tests consuming lots of different pieces of Solr output, and 
> all that code runs fine in non-cloud mode too.
> 
> Is this to be expected, normal? Did i catch another bug?
> 
> Thanks!
> Markus


JSON facets, count a long or an integer in cloud and non-cloud modes

2016-03-22 Thread Markus Jelsma
Hello,

Using SolrJ i built a method that consumes output produced by JSON facets, it 
also checks the count before further processing the output:




  49
  

  

This is the code reading the count value via SolrJ:

QueryResponse response = sourceClient.query(query);
NamedList jsonFacets = (NamedList)response.getResponse().get("facets");
int totalOccurences = (int)jsonFacets.get("count");

The problem is, this code doesn't work in unit tests, it throws a:
java.lang.ClassCastException: java.lang.Long cannot be cast to 
java.lang.Integer!?

But why it is an integer right? Anyway, i change the totalOccurences and the 
cast to a long and the unit tests runs just fine. But when actually running the 
code, i suddenly get another cast exception at exactly the same line.
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

What is going on? The only difference is that the unit tests runs in cloud mode 
via AbstractFullDistribZkTestBase, but i run the code in a local dev non-cloud 
mode. I haven't noticed this behaviour anywhere else although i have many unit 
tests consuming lots of different pieces of Solr output, and all that code runs 
fine in non-cloud mode too.

Is this to be expected, normal? Did i catch another bug?

Thanks!
Markus