Skip to content
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

Resolve peer address before assigning it's IP to member #1634

Merged
merged 1 commit into from Jan 13, 2017

Conversation

elliott-davis
Copy link
Contributor

The previous behavour of a peer binding would not resolve a dns entry before trying to unwrap a string. This caused a thread panic that would kill the supervisor.
The new behavour will try and resolve the ip's for dns entries and die if it is unable to do so.

@thesentinels
Copy link
Contributor

Thanks for the pull request! Here is what will happen next:

  1. Your PR will be reviewed by the maintainers
  2. If everything looks good, one of them will approve it, and your PR will be merged.

Thank you for contributing!

The previous behavour of a peer binding would not resolve a dns entry before trying to unwrap a string. This caused a thread panic that would kill the supervisor.
The new behavour will try and resolve the ip's for dns entries and die if it is unable to do so.

Signed-off-by: Elliott Davis <edavis@chef.io>
Copy link
Contributor

@chefsalim chefsalim left a comment

Choose a reason for hiding this comment

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

Looks good to me :)

@mwrock
Copy link
Contributor

mwrock commented Jan 13, 2017

Awesome like a possom!

Rerunning travis and appveyor whose breaks look unrelated.

@mwrock
Copy link
Contributor

mwrock commented Jan 13, 2017

@thesentinels approve

@thesentinels
Copy link
Contributor

🤘 I am testing your branch against master before merging it. We do this to ensure that the master branch is never failing tests.

@thesentinels
Copy link
Contributor

:neckbeard: Travis CI has started testing this PR.

@thesentinels
Copy link
Contributor

💖 Travis CI reports this PR passed.

It always makes me feel nice when humans approve of one anothers work. I'm merging this PR now.

I just want you and the contributor to answer me one question:

gif-keyboard-3280869874741411265

@thesentinels thesentinels merged commit cf84ee3 into master Jan 13, 2017
@thesentinels thesentinels deleted the resolve_peer_host branch January 13, 2017 18:01
Copy link
Contributor

@adamhjk adamhjk left a comment

Choose a reason for hiding this comment

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

This fixes the issue, which is great - but the meta-problem was that we panicked on bad input, and this keeps that trend. Before we merge this, we should add an Error class for it, and return that rather than panicking the thread.

@@ -87,7 +87,10 @@ impl Manager {
None));
outputln!("Butterfly Member ID {}", server.member_id());
for peer_addr in gconfig().gossip_peer() {
let addr: SocketAddr = peer_addr.parse().unwrap();
let addrs: Vec<SocketAddr> = peer_addr.to_socket_addrs()
.expect("Unable to resolve domain")
Copy link
Contributor

Choose a reason for hiding this comment

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

This function returns a Result - we should add an error for failure to resolve, and return an error, so that the tooling can handle things like pretty printing the error.

Copy link
Contributor

Choose a reason for hiding this comment

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

Doesn't the expect mostly take care of this? It conveys how the input failed and if it does fail, I don't see harm in the panic as long as its made clear to the user why.

Copy link
Contributor

Choose a reason for hiding this comment

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

The application knows how to exit cleanly with an error message, with pretty colors and details about precisely where the error was generated in the source. Panic makes sure you can't do that.

Also, this gives optionality to the caller - if you wanted to panic, you easily can.

@christophermaier christophermaier added Focus:Supervisor Related to the Habitat Supervisor (core/hab-sup) component Type: Bug Issues that describe broken functionality and removed A-supervisor labels Jul 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Focus:Supervisor Related to the Habitat Supervisor (core/hab-sup) component Type: Bug Issues that describe broken functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants