Bug #21831
beast: frontend hangs on pause for multisite reconfiguration
% Done:
0%
Source:
Tags:
beast multisite
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
The beast frontend handles pause_for_new_config() by calling boost::asio::tcp::acceptor::cancel(), which unblocks any threads that were only waiting on boost::asio::tcp::acceptor::async_accept().
However, existing keepalive connections will also be waiting to read the next message header with beast::http::async_read_some(), and that prevents boost::asio::io_service::run() from returning to complete the pause.
This means that keepalive connections will cause pause_for_new_config() to hang until all such connections are closed by the clients.
History
#1 Updated by Casey Bodley over 5 years ago
- Tags set to beast multisite
#2 Updated by Casey Bodley over 5 years ago
- Status changed from New to Fix Under Review
#3 Updated by Casey Bodley over 5 years ago
- Status changed from Fix Under Review to Resolved