[
https://issues.apache.org/jira/browse/HBASE-15835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HBASE-15835:
--------------------------
Resolution: Fixed
Hadoop Flags: Reviewed
Release Note:
Always force random port assignment if user has not explicitly defined an
alternate port:
{code}
Configuration conf = this.getConfiguration();
if (conf.getInt(HConstants.MASTER_INFO_PORT,
HConstants.DEFAULT_MASTER_INFOPORT)
== HConstants.DEFAULT_MASTER_INFOPORT) {
conf.setInt(HConstants.MASTER_INFO_PORT, -1);
}
if (conf.getInt(HConstants.REGIONSERVER_PORT,
HConstants.DEFAULT_REGIONSERVER_PORT)
== HConstants.DEFAULT_REGIONSERVER_PORT) {
conf.setInt(HConstants.REGIONSERVER_PORT, -1);
}
{code}
Status: Resolved (was: Patch Available)
Pushed to master branch. Thanks @daniel vimont for the nice patch. I like in
particular how this is something we've just put up with for ever but because
you are new, you recognize that this is just broke... and then fixed it. Will
help other new users.
> HBaseTestingUtility#startMiniCluster throws "HMasterAddress already in use"
> RuntimeException when a local instance of HBase is running
> --------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-15835
> URL: https://issues.apache.org/jira/browse/HBASE-15835
> Project: HBase
> Issue Type: Bug
> Components: API
> Affects Versions: 2.0.0
> Reporter: Daniel Vimont
> Assignee: Daniel Vimont
> Labels: easyfix
> Fix For: 2.0.0
>
> Attachments: HBASE-15835-v1.patch, HBASE-15835-v2.patch,
> HBASE-15835-v3.patch
>
>
> When a MiniCluster is being started with the
> {{HBaseTestUtility#startMiniCluster}} method (most typically in the context
> of JUnit testing), if a local HBase instance is already running (or for that
> matter, another thread with another MiniCluster is already running), the
> startup will fail with a RuntimeException saying "HMasterAddress already in
> use", referring explicitly to contention for the same default master info
> port (16010).
> This problem most recently came up in conjunction with HBASE-14876 and its
> sub-JIRAs (development of new HBase-oriented Maven archetypes), but this is
> apparently a known issue to veteran developers, who tend to set up the
> @BeforeClass sections of their test modules with code similar to the
> following:
> {code}
> UTIL = HBaseTestingUtility.createLocalHTU();
> // disable UI's on test cluster.
> UTIL.getConfiguration().setInt("hbase.master.info.port", -1);
> UTIL.getConfiguration().setInt("hbase.regionserver.info.port", -1);
> UTIL.startMiniCluster();
> {code}
> A comprehensive solution modeled on this should be put directly into
> HBaseTestUtility's main constructor, using one of the following options:
> OPTION 1 (always force random port assignment):
> {code}
> this.getConfiguration().setInt(HConstants.MASTER_INFO_PORT, -1);
> this.getConfiguration().setInt(HConstants.REGIONSERVER_PORT, -1);
> {code}
> OPTION 2 (always force random port assignment if user has not explicitly
> defined alternate port):
> {code}
> Configuration conf = this.getConfiguration();
> if (conf.getInt(HConstants.MASTER_INFO_PORT,
> HConstants.DEFAULT_MASTER_INFOPORT)
> == HConstants.DEFAULT_MASTER_INFOPORT) {
> conf.setInt(HConstants.MASTER_INFO_PORT, -1);
> }
> if (conf.getInt(HConstants.REGIONSERVER_PORT,
> HConstants.DEFAULT_REGIONSERVER_PORT)
> == HConstants.DEFAULT_REGIONSERVER_PORT) {
> conf.setInt(HConstants.REGIONSERVER_PORT, -1);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)