Skip to content

Add host address to BindTransportException message #51269

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

Merged
merged 5 commits into from
Feb 4, 2020

Conversation

mariaral
Copy link
Contributor

When bind fails, show the host address in addition to the port. This
helps debugging cases with wrong "network.host" values.

Closes #48001

When bind fails, show the host address in addition to the port. This
helps debugging cases with wrong "network.host" values.

Closes elastic#48001
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-distributed (:Distributed/Network)

@DaveCTurner
Copy link
Contributor

@elasticmachine test this please

@@ -174,7 +174,10 @@ private TransportAddress bindAddress(final InetAddress hostAddress) {
return true;
});
if (!success) {
throw new BindHttpException("Failed to bind to [" + port.getPortRangeString() + "]", lastException.get());
throw new BindHttpException(
Copy link
Member

Choose a reason for hiding this comment

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

This is failing forbidden APIs checks, see the logs:

Forbidden method invocation: java.net.InetAddress#getHostAddress() [use NetworkAddress format/formatAddress to print IP or IP+ports]
  in org.elasticsearch.transport.TcpTransport (TcpTransport.java:381)
Forbidden method invocation: java.net.InetAddress#getHostAddress() [use NetworkAddress format/formatAddress to print IP or IP+ports]
  in org.elasticsearch.http.AbstractHttpServerTransport (AbstractHttpServerTransport.java:178)
Scanned 5715 class file(s) for forbidden API invocations (in 5.20s), 2 error(s).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi @original-brownbear, thanks for reviewing this. I ran the tests but forgot to run the check task. Will fix this ASAP.

Copy link
Member

Choose a reason for hiding this comment

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

@mariaral FYI, you can just run these simple static code checks via:

./gradlew precommit 

no need to run a full check for those

Copy link
Contributor Author

@mariaral mariaral Jan 22, 2020

Choose a reason for hiding this comment

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

Thanks @original-brownbear for the tip. I didn't know of the precommit task.

I'm thinking of extending NetworkAddress.format() to be able to handle PortsRange objects and use that instead of coping the same message in five places. I propose using the following format:

    IPv4 no port: 127.0.0.1
    IPv4 single port: 127.0.0.1:9300
    IPv4 multiple ports: 127.0.0.1:[9300-9400]
    IPv6 multiple ports: [::1]:[9300-9400]

What do you think?

Copy link
Member

Choose a reason for hiding this comment

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

I only count two spots where we print the PortsRange but fine by me to keep it consistent via a utility method :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I pushed a new commit. Please take a look.

@ywelsch ywelsch self-requested a review January 22, 2020 10:47
Extend NetworkAddress.format() to handle port ranges and use this
utility method instead of forbidden InetAddress.getHostAddress().
@DaveCTurner
Copy link
Contributor

@elasticmachine test this please

Copy link
Contributor

@DaveCTurner DaveCTurner left a comment

Choose a reason for hiding this comment

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

I think we're missing a test case (see comment) but otherwise this looks good.

@DaveCTurner
Copy link
Contributor

@elasticmachine update branch

@DaveCTurner
Copy link
Contributor

@elasticmachine ok to test

@DaveCTurner
Copy link
Contributor

Failures look unrelated. @elasticmachine test this please

@DaveCTurner
Copy link
Contributor

@elasticmachine update branch

Copy link
Contributor

@DaveCTurner DaveCTurner left a comment

Choose a reason for hiding this comment

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

LGTM, but I don't have time to merge this right now.

@DaveCTurner DaveCTurner merged commit 84dd9dc into elastic:master Feb 4, 2020
@mariaral mariaral deleted the feature-bind-host branch February 4, 2020 09:08
DaveCTurner pushed a commit that referenced this pull request Feb 4, 2020
When bind fails, show the host address in addition to the port. This
helps debugging cases with wrong "network.host" values.

Closes #48001
@DaveCTurner
Copy link
Contributor

This is merged and backported to 7.x now. Thanks for your contribution @mariaral.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug :Distributed Coordination/Network Http and internode communication implementations v7.7.0 v8.0.0-alpha1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unhelpful error when trying to bind to an unknown address
5 participants