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