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

hot upgrade and restart #2992

Closed
GOVYANSONG opened this issue Sep 22, 2022 · 3 comments
Closed

hot upgrade and restart #2992

GOVYANSONG opened this issue Sep 22, 2022 · 3 comments
Labels
C-feature Category: feature. This is adding a new feature.

Comments

@GOVYANSONG
Copy link

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

We would like to achieve high availability and zero downtime in our micro service architecture. We use tonic/hyper stack. particularly, we use unix domain socket transport. In our own research, we have identified solutions employed by envoy, mosn etc. But we lack of insights on how the potential solution would transpire.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Since hyper has knowledge of live / open connections, it would be ideal to have access to them during live migration from current binary to newer version. I am not sure the responsibility can be solely born upon hyper. Certain integration is certainly required.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Hyper graceful shutdown is a big plus. live connection and listener migration may be a bit of elusive at the moment. but definitely doable given sufficient resource and knowledge.

Additional context
Add any other context or screenshots about the feature request here.

@GOVYANSONG GOVYANSONG added the C-feature Category: feature. This is adding a new feature. label Sep 22, 2022
@malaire
Copy link

malaire commented Sep 23, 2022

My understanding is that hot restart would require sending file/socket descriptors of live connections via unix socket from old process to new one. (At least this is a possible option of how that could be implemented.)

Stable Rust doesn't yet support sending file/socket descriptors, but this feature is being developed currently: unix_socket_ancillary_data

@GOVYANSONG
Copy link
Author

Thanks for the information. It is really exciting to know about ongoing effort implementing this feature.

@malaire
Copy link

malaire commented Sep 23, 2022

Well of course after that required low-level feature is available, it's still a lot of work to actually support hot restart.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-feature Category: feature. This is adding a new feature.
Projects
None yet
Development

No branches or pull requests

2 participants