Instead of lengthy blurbs, switch to single-line, machine-readable standardized (https://spdx.dev) license identifiers. The Linux kernel switched long ago, so there is strong precedent. Three cases are handled: AGPL-only, Apache-only, and dual licensed. For the latter case, I chose (AGPL-3.0-or-later and Apache-2.0), reasoning that our changes are extensive enough to apply our license. The changes we applied mechanically with a script, except to licenses/README.md. Closes #9937
35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
/*
|
|
* Copyright 2016-present ScyllaDB
|
|
**/
|
|
|
|
/* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
#include "utils/disk-error-handler.hh"
|
|
|
|
thread_local disk_error_signal_type commit_error;
|
|
thread_local disk_error_signal_type general_disk_error;
|
|
|
|
thread_local io_error_handler commit_error_handler = default_io_error_handler(commit_error);
|
|
thread_local io_error_handler general_disk_error_handler = default_io_error_handler(general_disk_error);
|
|
thread_local io_error_handler sstable_write_error_handler = default_io_error_handler(sstable_write_error);
|
|
|
|
io_error_handler default_io_error_handler(disk_error_signal_type& signal) {
|
|
return [&signal] (std::exception_ptr eptr) {
|
|
try {
|
|
std::rethrow_exception(eptr);
|
|
} catch(std::system_error& e) {
|
|
if (should_stop_on_system_error(e)) {
|
|
signal();
|
|
throw storage_io_error(e);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
io_error_handler_gen default_io_error_handler_gen() {
|
|
return [] (disk_error_signal_type& signal) {
|
|
return default_io_error_handler(signal);
|
|
};
|
|
}
|