Skip to content

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

});
if (!success) {
throw new BindHttpException("Failed to bind to [" + port.getPortRangeString() + "]", lastException.get());
throw new BindHttpException(
Copy link
Contributor

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
Contributor

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
Contributor

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