-
Notifications
You must be signed in to change notification settings - Fork 25.2k
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
Conversation
When bind fails, show the host address in addition to the port. This helps debugging cases with wrong "network.host" values. Closes elastic#48001
Pinging @elastic/es-distributed (:Distributed/Network) |
@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( |
There was a problem hiding this comment.
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).
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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 :)
There was a problem hiding this comment.
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.
Extend NetworkAddress.format() to handle port ranges and use this utility method instead of forbidden InetAddress.getHostAddress().
@elasticmachine test this please |
There was a problem hiding this 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.
server/src/main/java/org/elasticsearch/common/network/NetworkAddress.java
Show resolved
Hide resolved
@elasticmachine update branch |
@elasticmachine ok to test |
Failures look unrelated. @elasticmachine test this please |
@elasticmachine update branch |
There was a problem hiding this 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.
When bind fails, show the host address in addition to the port. This helps debugging cases with wrong "network.host" values. Closes #48001
This is merged and backported to 7.x now. Thanks for your contribution @mariaral. |
When bind fails, show the host address in addition to the port. This
helps debugging cases with wrong "network.host" values.
Closes #48001