Skip to content

feat: HBase resolvable endpoints #1159

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 22 commits into
base: main
Choose a base branch
from
Open

Conversation

adwk67
Copy link
Member

@adwk67 adwk67 commented Jun 11, 2025

Description

fixes: stackabletech/hbase-operator#641

Warning

Merge this at the same time as stackabletech/hbase-operator#639, otherwise tests will break!

Definition of Done Checklist

Note

Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant.

Please make sure all these things are done and tick the boxes

  • Changes are OpenShift compatible
  • All added packages (via microdnf or otherwise) have a comment on why they are added
  • Things not downloaded from Red Hat repositories should be mirrored in the Stackable repository and downloaded from there
  • All packages should have (if available) signatures/hashes verified
  • Add an entry to the CHANGELOG.md file
  • Integration tests ran successfully
TIP: Running integration tests with a new product image

The image can be built and uploaded to the kind cluster with the following commands:

bake --product <product> --image-version <stackable-image-version>
kind load docker-image <image-tagged-with-the-major-version> --name=<name-of-your-test-cluster>

See the output of bake to retrieve the image tag for <image-tagged-with-the-major-version>.

@adwk67 adwk67 moved this to Development: In Progress in Stackable Engineering Jun 16, 2025
@adwk67 adwk67 self-assigned this Jun 16, 2025
@adwk67 adwk67 marked this pull request as ready for review June 16, 2025 14:10
@adwk67 adwk67 moved this from Development: In Progress to Development: Waiting for Review in Stackable Engineering Jun 16, 2025
@nightkr nightkr self-requested a review June 24, 2025 10:34
rpcServices = createRpcServices();
useThisHostnameInstead = getUseThisHostnameInstead(conf);
+ useThisPortInstead = getUseThisPortInstead(conf);
+ useThisInfoPortInstead = conf.getInt("hbase.info.port" , this.infoServer != null ? this.infoServer.getPort() : -1);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to pull hbase.info.port into a constant for consistency? For the same reason, we might want to split it into master/regionserver variants?

Also, directionally.. for RPC ports we follow the existing RPC hostname convention of "leave the existing key as the advertised port, introduce a new key for overriding the bound port". I agree that overriding the advertised port instead makes more sense in isolation (and is consistent with kafka et al), but we should probably try to be consistent (both with the rest of our patch and with existing HBase code).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hbase.info.port is now hbase.master.bound.info.port and hbase.regionserver.bound.info.port.
We are not touching MASTER_INFO_PORT (= "hbase.master.info.port"): is that you meant with "leave the existing key as the advertised port, introduce a new key for overriding the bound port"?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm looking at it now.. MASTER_INFO_PORT is bound (in HRegionServer.putUpWebUI()), MASTER_BOUND_INFO_PORT/useThisInfoPortInstead is advertised. That's.. backwards, at least compared to their names.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So
public static final String MASTER_BOUND_INFO_PORT = "hbase.master.bound.info.port";
should be renamed to something like:
public static final String MASTER_ADVERTISED_INFO_PORT = "hbase.master.advertised.info.port";
as MASTER_INFO_PORT is already the bound one?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be one way, yeah. But as I said above, I think we should try to be consistent about whether the "old" property (MASTER_INFO_PORT) is for the bound or advertised port.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've endeavoured to make that change in a separate patch: ee7ea2e

@nightkr nightkr moved this from Development: Waiting for Review to Development: In Review in Stackable Engineering Jun 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Development: In Review
Development

Successfully merging this pull request may close these issues.

Use Node-IPs for external reachability and localities
2 participants