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

MONGOID-5758: Add Mongoid.reconnect_clients and improve forking webserver documentation #5808

Merged
merged 8 commits into from
Apr 22, 2024

Conversation

johnnyshields
Copy link
Contributor

@johnnyshields johnnyshields commented Apr 4, 2024

This PR does the following:

  • Add Mongoid.reconnect_clients method analogous to Mongoid.disconnect_clients. The reason for adding this is to simplify web server hooks (see added docs.)
  • Corrects the @return in the docs for disconnect_clients. Also added specs which cover the existing behavior.
  • Updates documentation related to web server forking.

This will hopefully help others avoid issues we saw in our production.

See also: mongodb/mongo-ruby-driver#2856

- Add Mongoid.reconnect_clients (analogous to Mongoid.disconnect_clients). The reason for adding this is to simply web server hooks (see added docs.)
- Corrects the @return in the docs for disconnect_clients. Also added specs for the existing behavior.
- Updates documentation related to web server forking.
@johnnyshields johnnyshields changed the title Add Mongoid.reconnect_clients and improve forking webserver documentation MONGOID-5758: Add Mongoid.reconnect_clients and improve forking webserver documentation Apr 4, 2024
@johnnyshields
Copy link
Contributor Author

FYI I've verified the documentation and changes here in my production Puma app.

lib/mongoid.rb Outdated
# @example Reconnect all active clients.
# Mongoid.reconnect_clients
#
# @return [ Array<Mongo::Client> ] The driver clients.
Copy link
Contributor

Choose a reason for hiding this comment

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

Hey @johnnyshields -- here and elsewhere, do you think there's value in actually returning the list of clients? I don't believe the current return value is intentional (or even useful). I think I'd rather leave the documented return value as true (or at least "truthy"), rather than be committed to always returning a list of clients here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jamis the documentation should match what the method does, and today the method returns the list of clients. It is certainly fine to raise another PR and change the return value, I doubt anyone is relying on this behavior today.

Copy link
Contributor

Choose a reason for hiding this comment

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

You're not wrong, Johnny. However, it's also fair to say that the method returns truthy, which is what the documentation today (poorly) implies. I much prefer a truthy return value, than telling the world to expect it to return a list of clients. There are other ways to get the list of clients, and I'd really rather this not be one of them.

Copy link
Contributor Author

@johnnyshields johnnyshields Apr 15, 2024

Choose a reason for hiding this comment

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

OK so would you like me to change the method return behavior of both disconnect (existing) and reconnect (new) in this PR?

Copy link
Contributor

Choose a reason for hiding this comment

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

reconnect should mirror the behavior of disconnect. I'm honestly more worried about the documentation (and the contract it exposes) than the actual implementation, but as long as we're not promising clients more than we want to deliver (e.g. exposing the client list as a return value here), I'm okay.

Copy link
Contributor Author

@johnnyshields johnnyshields Apr 19, 2024

Choose a reason for hiding this comment

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

@jamis this is done--both disconnect and reconnect now return true.

lib/mongoid/clients.rb Outdated Show resolved Hide resolved
Copy link
Contributor

@jamis jamis left a comment

Choose a reason for hiding this comment

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

Thank you Johnny. Great work on cleaning up the docs, too. Much appreciated.

@jamis jamis merged commit aef7114 into mongodb:master Apr 22, 2024
15 of 16 checks passed
brennana pushed a commit to hundio/mongoid that referenced this pull request Jun 7, 2024
…rver documentation (mongodb#5808)

* This PR does the following:
- Add Mongoid.reconnect_clients (analogous to Mongoid.disconnect_clients). The reason for adding this is to simply web server hooks (see added docs.)
- Corrects the @return in the docs for disconnect_clients. Also added specs for the existing behavior.
- Updates documentation related to web server forking.

* Fix method name

* More terse syntax

* Preserve old return type

* Update configuration.txt

* Update configuration.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants