mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-29 20:57:00 +00:00
The way our boot-time service "controllers" are written, if a controller's start_server() finds an error and throws, it cannot the caller (main.cc) to call stop_server(), and must clean up resources already created (e.g., sharded services) before returning or risk crashes on assertion failures. This patch fixes such a mistake in Alternator's initialization. As noted in issue #10025, if the Alternator TLS configuration is broken - especially the certificate or key files are missing - Scylla would crash on an assertion failure, instead of reporting the error as expected. Before this patch such a misconfiguration will result in the unintelligible: <alternator::server>::~sharded() [Service = alternator::server]: Assertion `_instances.empty()' failed. Aborting on shard 0. After this patch we get the right error message: ERROR 2022-03-21 15:25:07,553 [shard 0] init - Startup failed: std::_Nested_exception<std::runtime_error> (Failed to set up Alternator TLS credentials): std::_Nested_exception<std::runtime_error> (Could not read certificate file conf/scylla.crt): std::filesystem::__cxx11:: filesystem_error (error system:2, filesystem error: open failed: No such file or directory [conf/scylla.crt]) Arguably this error message is a bit ugly, so I opened https://github.com/scylladb/seastar/issues/1029, but at least it says exactly what the error is. Fixes #10025 Signed-off-by: Nadav Har'El <nyh@scylladb.com> Message-Id: <20220321133323.3150939-1-nyh@scylladb.com>
6.3 KiB
6.3 KiB