Re: JSON facets, count a long or an integer in cloud and non-cloud modes
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 Jelsmawrote: > 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
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
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
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
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