Greg Hill created AMBARI-8124:
---------------------------------
Summary: Stack/Service/Component/Configurations API call returns
invalid JSON response in some cases
Key: AMBARI-8124
URL: https://issues.apache.org/jira/browse/AMBARI-8124
Project: Ambari
Issue Type: Bug
Components: ambari-server
Affects Versions: 1.7.0
Reporter: Greg Hill
The HBASE 'content' configurations item returns two JSON data structures
separated by a space. This is not a valid response in a JSON API. The response
needs to wrap the items in a list structure. Here is the call and response
from a default ambari install on 1.7.0:
{noformat}
GET /api/v1/stacks2/HDP/versions/2.1/stackServices/HBASE/configurations/content
{
"href" :
"http://c6401.ambari.apache.org:8080/api/v1/stacks2/HDP/versions/2.1/stackServices/HBASE/configurations/content",
"StackConfigurations" : {
"final" : "false",
"property_description" : "Custom log4j.properties",
"property_name" : "content",
"property_type" : [ ],
"property_value" : "\n# Licensed to the Apache Software Foundation (ASF)
under one\n# or more contributor license agreements. See the NOTICE file\n#
distributed with this work for additional information\n# regarding copyright
ownership. The ASF licenses this file\n# to you under the Apache License,
Version 2.0 (the\n# \"License\"); you may not use this file except in
compliance\n# with the License. You may obtain a copy of the License at\n#\n#
http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by
applicable law or agreed to in writing, software\n# distributed under the
License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the
specific language governing permissions and\n# limitations under the
License.\n\n\n# Define some default values that can be overridden by system
properties\nhbase.root.logger=INFO,console\nhbase.security.logger=INFO,console\nhbase.log.dir=.\nhbase.log.file=hbase.log\n\n#
Define the root logger to the system property
\"hbase.root.logger\".\nlog4j.rootLogger=${hbase.root.logger}\n\n# Logging
Threshold\nlog4j.threshold=ALL\n\n#\n# Daily Rolling File
Appender\n#\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n\n#
Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day
backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n#
Pattern format: Date LogLevel LoggerName
LogMessage\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t]
%c{2}: %m%n\n\n# Rolling File Appender
properties\nhbase.log.maxfilesize=256MB\nhbase.log.maxbackupindex=20\n\n#
Rolling File
Appender\nlog4j.appender.RFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n\nlog4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\nlog4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}\n\nlog4j.appender.RFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601}
%-5p [%t] %c{2}: %m%n\n\n#\n# Security audit
appender\n#\nhbase.security.log.file=SecurityAuth.audit\nhbase.security.log.maxfilesize=256MB\nhbase.security.log.maxbackupindex=20\nlog4j.appender.RFAS=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\nlog4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\nlog4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\nlog4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601}
%p %c:
%m%n\nlog4j.category.SecurityLogger=${hbase.security.logger}\nlog4j.additivity.SecurityLogger=false\n#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n\n#\n#
Null
Appender\n#\nlog4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n\n#\n#
console\n# Add \"console\" to rootlogger above if you want to use
this\n#\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{ISO8601}
%-5p [%t] %c{2}: %m%n\n\n# Custom Logging
levels\n\nlog4j.logger.org.apache.zookeeper=INFO\n#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\nlog4j.logger.org.apache.hadoop.hbase=DEBUG\n#
Make these two classes INFO-level. Make them DEBUG to see more zk
debug.\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n#log4j.logger.org.apache.hadoop.dfs=DEBUG\n#
Set this class to log INFO only otherwise its OTT\n# Enable this to get
detailed connection error/retry logging.\n#
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n\n\n#
Uncomment this line to enable tracing on _every_ RPC call (this can be a lot
of output)\n#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n\n#
Uncomment the below if you want to remove logging of client region caching'\n#
and scan of .META. messages\n#
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n#
log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO\n\n ",
"service_name" : "HBASE",
"stack_name" : "HDP",
"stack_version" : "2.1",
"type" : "hbase-log4j.xml"
}
} {
"href" :
"http://c6401.ambari.apache.org:8080/api/v1/stacks2/HDP/versions/2.1/stackServices/HBASE/configurations/content",
"StackConfigurations" : {
"final" : "false",
"property_description" : "This is the jinja template for hbase-env.sh file",
"property_name" : "content",
"property_type" : [ ],
"property_value" : "\n# Set environment variables here.\n\n# The java
implementation to use. Java 1.6 required.\nexport
JAVA_HOME={{java64_home}}\n\n# HBase Configuration directory\nexport
HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}\n\n# Extra Java CLASSPATH
elements. Optional.\nexport HBASE_CLASSPATH=${HBASE_CLASSPATH}\n\n# The maximum
amount of heap to use, in MB. Default is 1000.\n# export
HBASE_HEAPSIZE=1000\n\n# Extra Java runtime options.\n# Below are what we set
by default. May only work with SUN JVM.\n# For more on why as well as other
possible settings,\n# see
http://wiki.apache.org/hadoop/PerformanceTuning\nexport
HBASE_OPTS=\"-XX:+UseConcMarkSweepGC
-XX:ErrorFile={{log_dir}}/hs_err_pid%p.log\"\nexport
SERVER_GC_OPTS=\"-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps
-Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`\"\n# Uncomment below to enable
java garbage collection logging.\n# export HBASE_OPTS=\"$HBASE_OPTS -verbose:gc
-XX:+PrintGCDetails -XX:+PrintGCDateStamps
-Xloggc:$HBASE_HOME/logs/gc-hbase.log\"\n\n# Uncomment and adjust to enable JMX
exporting\n# See jmxremote.password and jmxremote.access in
$JRE_HOME/lib/management to configure remote password access.\n# More details
at:
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html\n#\n#
export HBASE_JMX_BASE=\"-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false\"\nexport
HBASE_MASTER_OPTS=\"-Xmx{{master_heapsize}}\"\nexport
HBASE_REGIONSERVER_OPTS=\"-Xmn{{regionserver_xmn_size}}
-XX:CMSInitiatingOccupancyFraction=70 -Xms{{regionserver_heapsize}}
-Xmx{{regionserver_heapsize}}\"\n# export HBASE_THRIFT_OPTS=\"$HBASE_JMX_BASE
-Dcom.sun.management.jmxremote.port=10103\"\n# export
HBASE_ZOOKEEPER_OPTS=\"$HBASE_JMX_BASE
-Dcom.sun.management.jmxremote.port=10104\"\n\n# File naming hosts on which
HRegionServers will run. $HBASE_HOME/conf/regionservers by default.\nexport
HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers\n\n# Extra ssh options.
Empty by default.\n# export HBASE_SSH_OPTS=\"-o ConnectTimeout=1 -o
SendEnv=HBASE_CONF_DIR\"\n\n# Where log files are stored. $HBASE_HOME/logs by
default.\nexport HBASE_LOG_DIR={{log_dir}}\n\n# A string representing this
instance of hbase. $USER by default.\n# export HBASE_IDENT_STRING=$USER\n\n#
The scheduling priority for daemon processes. See 'man nice'.\n# export
HBASE_NICENESS=10\n\n# The directory where pid files are stored. /tmp by
default.\nexport HBASE_PID_DIR={{pid_dir}}\n\n# Seconds to sleep between slave
commands. Unset by default. This\n# can be useful in large clusters, where,
e.g., slave rsyncs can\n# otherwise arrive faster than the master can service
them.\n# export HBASE_SLAVE_SLEEP=0.1\n\n# Tell HBase whether it should manage
it's own instance of Zookeeper or not.\nexport HBASE_MANAGES_ZK=false\n\n{% if
security_enabled %}\nexport HBASE_OPTS=\"$HBASE_OPTS
-Djava.security.auth.login.config={{client_jaas_config_file}}\"\nexport
HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS
-Djava.security.auth.login.config={{master_jaas_config_file}}\"\nexport
HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS
-Djava.security.auth.login.config={{regionserver_jaas_config_file}}\"\n{% endif
%}\n ",
"service_name" : "HBASE",
"stack_name" : "HDP",
"stack_version" : "2.1",
"type" : "hbase-env.xml"
}
}
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)