[
https://issues.apache.org/jira/browse/GEODE-6808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Juan José Ramos Cassella updated GEODE-6808:
--------------------------------------------
Description:
As part of thee efforts to remove {{TypedJson}} and move from {{org.json}} to
{{Jackson}} between {{1.8.0}} and {{1.9.0}}, the {{JSON}} string returned by
the {{QueryDataFunction}} doesn't include the object type anymore within the
array (at least for primitive types). The old version used to return results in
the form {{\{"result":[["java.lang.String","v"],["java.lang.String","b"]]}\}},
while the new one uses {{\{"result":["v", "b"]\}}}.
This function is used through {{DistributedSystemMXBean.queryData}}, so any
user executing queries through {{JMX}} and relying on the [documented
representation|https://geode.apache.org/releases/latest/javadoc/org/apache/geode/management/DistributedSystemMXBean.html#queryData-java.lang.String-java.lang.String-int-]
to parse the results will fail as soon as they upgrade to {{1.9.0}}.
Several parsing methods within {{DataBrowser.js}} *still use these deleted
types* as well to create an internal representation that is later used to show
the results in {{HTML}} so, starting with {{1.9.0}}, the query results are
always shown as empty.
{code:javascript}
// This function creates complete result panel html
function createHtmlForQueryResults(){
var memberResults = responseResult.result;
if(memberResults.length > 0){
if(memberResults[0].member != undefined || memberResults[0].member != null){
//console.log("member wise results found..");
for(var i=0; i<memberResults.length; i++){
//console.log(memberResults[i].member);
$('#memberAccordion').append(createHtmlForMember(memberResults[i]));
}
}else{
//console.log("cluster level results found..");
var accordionContentHtml = "";
accordionContentHtml = createClusterAccordionContentHtml(memberResults);
var resultHtml = "<div class=\"accordion-content2\">"+
accordionContentHtml +"</div>";
$('#memberAccordion').append(resultHtml);
}
}else{
$('#memberAccordion').append("<span> No Results Found...</span>");
}
}
{code}
We need to either re-factor the entire parsing logic to use the new format, or
revert the changes to keep using the old format.
Cheers.
was:
As part of thee efforts to remove {{TypedJson}} and move from {{org.json}} to
{{Jackson}} between {{1.8.0}} and {{1.9.0}}, the {{JSON}} string returned by
the {{QueryDataFunction}} doesn't include the object type anymore within the
array. The old version used to return results in the form
{{\{"result":[["java.lang.String","v"],["java.lang.String","b"]]}\}}, while the
new one uses {{\{"result":["v", "b"]\}}}.
This function is used through {{DistributedSystemMXBean.queryData}}, so any
user executing queries through {{JMX}} and relying on the [documented
representation|https://geode.apache.org/releases/latest/javadoc/org/apache/geode/management/DistributedSystemMXBean.html#queryData-java.lang.String-java.lang.String-int-]
to parse the results will fail as soon as they upgrade to {{1.9.0}}.
Several parsing methods within {{DataBrowser.js}} *still use these deleted
types* as well to create an internal representation that is later used to show
the results in {{HTML}} so, starting with {{1.9.0}}, the query results are
always shown as empty.
{code:javascript}
// This function creates complete result panel html
function createHtmlForQueryResults(){
var memberResults = responseResult.result;
if(memberResults.length > 0){
if(memberResults[0].member != undefined || memberResults[0].member != null){
//console.log("member wise results found..");
for(var i=0; i<memberResults.length; i++){
//console.log(memberResults[i].member);
$('#memberAccordion').append(createHtmlForMember(memberResults[i]));
}
}else{
//console.log("cluster level results found..");
var accordionContentHtml = "";
accordionContentHtml = createClusterAccordionContentHtml(memberResults);
var resultHtml = "<div class=\"accordion-content2\">"+
accordionContentHtml +"</div>";
$('#memberAccordion').append(resultHtml);
}
}else{
$('#memberAccordion').append("<span> No Results Found...</span>");
}
}
{code}
We need to either re-factor the entire parsing logic to use the new format, or
revert the changes to keep using the old format.
Cheers.
> Backward compatibility broken in DistributedSystemMXBean.queryData
> ------------------------------------------------------------------
>
> Key: GEODE-6808
> URL: https://issues.apache.org/jira/browse/GEODE-6808
> Project: Geode
> Issue Type: Bug
> Components: jmx, pulse, querying
> Reporter: Juan José Ramos Cassella
> Priority: Major
>
> As part of thee efforts to remove {{TypedJson}} and move from {{org.json}} to
> {{Jackson}} between {{1.8.0}} and {{1.9.0}}, the {{JSON}} string returned by
> the {{QueryDataFunction}} doesn't include the object type anymore within the
> array (at least for primitive types). The old version used to return results
> in the form
> {{\{"result":[["java.lang.String","v"],["java.lang.String","b"]]}\}}, while
> the new one uses {{\{"result":["v", "b"]\}}}.
> This function is used through {{DistributedSystemMXBean.queryData}}, so any
> user executing queries through {{JMX}} and relying on the [documented
> representation|https://geode.apache.org/releases/latest/javadoc/org/apache/geode/management/DistributedSystemMXBean.html#queryData-java.lang.String-java.lang.String-int-]
> to parse the results will fail as soon as they upgrade to {{1.9.0}}.
> Several parsing methods within {{DataBrowser.js}} *still use these deleted
> types* as well to create an internal representation that is later used to
> show the results in {{HTML}} so, starting with {{1.9.0}}, the query results
> are always shown as empty.
> {code:javascript}
> // This function creates complete result panel html
> function createHtmlForQueryResults(){
> var memberResults = responseResult.result;
> if(memberResults.length > 0){
> if(memberResults[0].member != undefined || memberResults[0].member !=
> null){
> //console.log("member wise results found..");
> for(var i=0; i<memberResults.length; i++){
> //console.log(memberResults[i].member);
> $('#memberAccordion').append(createHtmlForMember(memberResults[i]));
> }
> }else{
> //console.log("cluster level results found..");
> var accordionContentHtml = "";
> accordionContentHtml = createClusterAccordionContentHtml(memberResults);
> var resultHtml = "<div class=\"accordion-content2\">"+
> accordionContentHtml +"</div>";
> $('#memberAccordion').append(resultHtml);
> }
> }else{
> $('#memberAccordion').append("<span> No Results Found...</span>");
> }
> }
> {code}
> We need to either re-factor the entire parsing logic to use the new format,
> or revert the changes to keep using the old format.
> Cheers.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)