Benoit Sigoure created HBASE-6504:
-------------------------------------
Summary: Adding GC details prevents HBase from starting in
non-distributed mode
Key: HBASE-6504
URL: https://issues.apache.org/jira/browse/HBASE-6504
Project: HBase
Issue Type: Bug
Affects Versions: 0.94.0
Reporter: Benoit Sigoure
Priority: Trivial
The {{conf/hbase-env.sh}} that ships with HBase contains a few commented out
examples of variables that could be useful, such as adding
{{-XX:+PrintGCDetails -XX:+PrintGCDateStamps}} to {{HBASE_OPTS}}. This has the
annoying side effect that the JVM prints a summary of memory usage when it
exits, and it does so on stdout:
{code}
$ ./bin/hbase org.apache.hadoop.hbase.util.HBaseConfTool
hbase.cluster.distributed
false
Heap
par new generation total 19136K, used 4908K [0x000000073a200000,
0x000000073b6c0000, 0x0000000751860000)
eden space 17024K, 28% used [0x000000073a200000, 0x000000073a6cb0a8,
0x000000073b2a0000)
from space 2112K, 0% used [0x000000073b2a0000, 0x000000073b2a0000,
0x000000073b4b0000)
to space 2112K, 0% used [0x000000073b4b0000, 0x000000073b4b0000,
0x000000073b6c0000)
concurrent mark-sweep generation total 63872K, used 0K [0x0000000751860000,
0x00000007556c0000, 0x00000007f5a00000)
concurrent-mark-sweep perm gen total 21248K, used 6994K [0x00000007f5a00000,
0x00000007f6ec0000, 0x0000000800000000)
$ ./bin/hbase org.apache.hadoop.hbase.util.HBaseConfTool
hbase.cluster.distributed >/dev/null
(nothing printed)
{code}
And this confuses {{bin/start-hbase.sh}} when it does
{{distMode=`$bin/hbase --config "$HBASE_CONF_DIR"
org.apache.hadoop.hbase.util.HBaseConfTool hbase.cluster.distributed`}},
because then the {{distMode}} variable is not just set to {{false}}, it also
contains all this JVM spam.
If you don't pay enough attention and realize that 3 processes are getting
started (ZK, HM, RS) instead of just one (HM), then you end up with this
confusing error message:
{{Could not start ZK at requested port of 2181. ZK was started at port: 2182.
Aborting as clients (e.g. shell) will not be able to find this ZK quorum.}},
which is even more puzzling because when you run {{netstat}} to see who owns
that port, then you won't find any rogue process other than the one you just
started.
I'm wondering if the fix is not to just change the {{if [ "$distMode" ==
'false' ]}} to a {{switch $distMode case (false*)}} type of test, to work
around this annoying JVM misfeature that pollutes stdout.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira